2012-11-02 51 views
0

我正在縮小位圖以避免出現OutOfMemoryException。有沒有辦法指定一個文件大小解碼?因此,無論輸入圖像的文件大小如何,它都會縮小到指定的文件大小。如何將某個位圖解碼爲某個文件大小?

我在使用http://androidbysravan.wordpress.com/category/outofmemory-exception-when-decoding-with-bitmapfactory/中的以下代碼,直到找出指定輸出文件大小的方法。

Bitmap bm = null; 
BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inSampleSize = 10; 
AssetFileDescriptor fileDescriptor =null; 
try { 
    fileDescriptor = _context.getContentResolver().openAssetFileDescriptor(selectedImage,"r"); 
} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
finally{ 
    try { 
     bm = BitmapFactory.decodeFileDescriptor(fileDescriptor.getFileDescriptor(), null, options); 
     fileDescriptor.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
return bm; 
} 
+2

文件大小沒有意義在這裏,當圖像被壓縮時,它是在一個文件中(例如, ,PNG,JPEG)。 – CommonsWare

回答

1

你解碼將處於壓縮格式,如PNG,JPEG等圖像所以,當你對它們進行解碼,所有你正在做的是他們解壓到內存中的android是可以理解的格式。儘管無法控制解碼圖像的大小,但是,您可以控制某些屬性,以便使用BitmapFactory.Options類高效地解碼圖像。

下面是關於如何正確使用這個類來有效地加載圖片的出色官方指南:

http://developer.android.com/training/displaying-bitmaps/load-bitmap.html

+0

感謝您的鏈接,我看了一下,並計算inSampleSize基於高度和我正在加載位圖的ImageView。 – benkdev

相關問題