我遇到了一个棘手的问题...
以下是我的故事:
我的设备是三星Galaxy Note,通常情况下,它以3264 * 2448像素的分辨率拍照。当我想要查找详细信息时,我喜欢清晰的图片,但在Android中处理这样巨大的图片时,我却讨厌它。我可以读取和显示这个大分辨率的图像,需要在其上绘制线条,然后需要将图片和线条保存为png格式。我的头疼之处就是我的Android总是给我内存不足异常,当我尝试创建可变位图时,就像这样:
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
When the
bmp.width * bmp.height * 4 > getScaledMaximumDrawingCacheSize()
异常跳出。我已经测试了myImageView.measure(...)
和myImageView.layout(...)
,但对我没有用。
当我使用更小的图片测试相同的代码时,一切都正常。
有没有专家能够解决这个问题或给我提供一个解决方案?谢谢!