【发布时间】:2015-04-16 12:27:56
【问题描述】:
我有一些关于位图解码的问题。
当我尝试使用 BitmapFactory.decodeByteArray 从 byte[] 数组中解码 Bitmap 时,结果位图中的 param byte[] 和 mBuffer byte[] 有什么区别。当函数返回时,位图是否仍保留对 byte[] 参数的引用?
-
当我使用以下代码从 sdcard 中的 jpg 文件解码位图时:
File file = new File(getExternalCacheDir(), "large.jpg"); bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); if(mImageView != null){ mImageView.setImageBitmap(bitmap); }此jpg文件分辨率为10800*5400,大小为13.82M,结果位图不为空,没有OOM错误,但位图不显示。怎么可能?我认为在这种情况下,android 应该抛出一个 OOM 错误,以便我可以捕获它以尝试再次缩小位图。但它什么也没显示。这似乎不合理。有人知道原因吗?
【问题讨论】:
-
“结果位图中的参数 byte[] 和 mBuffer byte[] 有什么区别”——第一个将保存 PNG、JPEG 等格式的内容。第二个保存解码图像的 AARRGGBB 字节。
-
@CommonsWare 谢谢。很好理解!