每当我尝试在imageview中显示大尺寸(1 MB)位图时,系统会抛出OutOfMemory异常。
如果我放置7-8 MB图像,画廊可以轻松显示该图像。
只是想知道设备默认图库如何以简单的方式显示大图?
答案 0 :(得分:0)
一般来说,他们对图像进行子采样。 1MB PNG或JPEG文件的分辨率将比屏幕高得多,因此加载整个图像是浪费的。子采样允许您将图像加载到更接近ImageView
的实际大小。使用,让它更好地适应记忆。一种简单的子采样方法涉及在inSampleSize
上使用BitmapFactory.Options
; Dave Morrissey's SubsamplingScaleImageView
提供了缩放缩放等功能,同时执行子采样(注意:我没有尝试过这个组件,因为我刚刚在一分钟之前遇到过它)。