我讀了很多關於inSampleSize OutOfMemory困境的討論。
不能得到一個好的解決方案,所以我問一個關於它的問題。
我目前正在加載一個位圖inSampleSize = 4。
這將給我一個大小爲648x388的位圖。
原始磁盤大小爲2592x1592。我在648x388位圖上寫文本並將其保存回磁盤。
我寫在648x388因爲2592x1592給我OutOfMemory。android如何加載/保存原始大小位圖沒有OutOfMemory
它的工作方式是可以將1-10個648x388位圖保存在while
循環中。
我想改變這個循環來保存1-10 2592x1592位圖。
我該如何安全地加載2592x1592?
我不在乎分辨率下降60%或更多。
只要位圖具有相同的大小2592x1592。
有沒有一種方法可能會保持大小,但使位圖變薄,
去除顏色沒有使質量不好。
我首先想到的是要像這樣的東西來獲得最大的位圖我能得到: 我沒有測試過這一點,但得到的感覺這是一個糟糕的方式
boolean work = true;
int insample = 2;
BitmapFactory.Options options = new BitmapFactory.Options();
while(work){
try{
options.inSampleSize = insample;
bitmap = BitmapFactory.decodeFile(filePath,options);
work = false;
}catch(Exception e){
insample++;
}
}
任何幫助將是篦。
謝謝@DArkO的回答。有趣的..如果我不能使用Web服務有一些方法來使位圖變薄,但保持相同的大小2592x1592。無論如何,我猜想我必須加載它,並擊中OOM。 – Erik 2011-06-16 18:21:57
分辨率實際上是一個位圖中有多少像素(一個維度是指單個線寬和多個像素分別存在多少個像素)。所以位圖對象保存了它所有的像素。通過縮小尺寸,可以減少像素數量並降低分辨率。這很簡單。我曾經使用過圖像,沒有辦法處理沒有內存使用的大型圖像(認爲像photoshop這樣的軟件,處理器和RAM內存昂貴,想象將這種東西裝入16兆內存中,這是不可能的。抱歉) – DArkO 2011-06-16 18:32:54
謝謝你的煽動。 必須找到一些可以訪問sdcard上的位圖和購買某種分辨率的android庫api。這應該不難,我猜 – Erik 2011-06-16 18:38:15