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; 
} 
4

1 回答 1

1

您解码的图像将采用压缩格式,例如 PNG、JPEG 等。因此,当您解码它们时,您所做的就是将它们以 android 可以理解的格式解压缩到内存中。尽管您无法控制解码图像的大小,但是您可以控制某些属性,这些属性允许您使用BitmapFactory.Options该类有效地解码图像。

这是关于如何正确使用此类来有效加载图像的优秀官方指南:

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

于 2012-11-02T17:29:57.610 回答