我刚刚遇到了一个棘手的问题...
这是我的故事:
我的设备是三星 Galaxy Note,通常它以3264 * 2448像素的分辨率拍照。当我想查找详细信息时,我喜欢精美的图片,但在这里我讨厌它,因为它在 Android 中处理起来非常庞大。我可以读取并显示这么大分辨率的图像,我需要在上面画线,然后我需要将图片和线条都保存到 png 中。我的头疼是,当我尝试创建这样的可变位图时,我的 Android 总是给我Out of memery exception :
Bitmap bmp = Bitmap.createBitmap(3264, 2448, Config.RGB_565);
Canvas cv = new Canvas(bmp);
//draw a line and save and restore canvas
// I found an alternative solution yet proven to be uncorrect:
myImageView.setDrawingCacheEnabled(true);
myImageView.buildDrawingCache(true);
Bitmap bmp = myImageView.getDrawingCache();
//save bmp to png
当。。。的时候
bmp.width * bmp.height * 4 > getScaledMaximumDrawingCacheSize()
异常跳出。我已经测试过了myImageView.measure(...)
,myImageView.layout(...)
对我没有用。(一切都很好,当我使用较小的图像测试相同的代码时)
任何专家都知道如何解决这个问题或向我提出解决方案?谢谢!