hpi*_*que 3 android bitmap out-of-memory
我有一个1000x1500像素位图,我想在Android中制作一个可变副本.
当我运行以下代码时......
// int width = original.getWidth(); // 1000px
// int height = original.getHeight(); // 1500px
final Bitmap result = original.copy(original.getConfig(), true);
original.recycle();
Run Code Online (Sandbox Code Playgroud)
......我OutOfMemoryError上copy线了:
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
ERROR/GraphicsJNI(419): VM won't let us allocate 6000000 bytes
Run Code Online (Sandbox Code Playgroud)
为什么复制指令需要6MB(!)才能生成1000x1500像素的位图?
如何以更高内存效率的方式从非可变位图创建可变位图?
BitmapFactory返回不可变位图.显然,从不可变位图创建可变位图的唯一方法是将其复制到新的可变位图中.在1000x1500位图的情况下,这显然需要12MB(1000x1500x4x2),这在大多数Android设备中导致OutOfMemoryError.
这个问题在Android中无法解决吗?
回答你的第一个问题:
1000*1500*32/8 = 600万
(32位/像素的颜色信息)
要回答第二个问题:您需要通过以块为单位处理图像来减小图像的大小,或者降低分辨率或颜色深度.
| 归档时间: |
|
| 查看次数: |
3820 次 |
| 最近记录: |