use*_*958 9 java android bitmap out-of-memory
我刚刚遇到了一个棘手的问题......
这是我的故事:
我的设备是三星Galaxy Note,通常,它以3264*2448像素的分辨率拍摄照片.我喜欢精美的图片,以便找到详细的信息,但在这里我讨厌它,因为它在Android中处理起来很大.我可以阅读并显示这个大分辨率的图像,我需要在它上面画线,然后我需要将图片和线条保存到png.令我头疼的是,当我尝试创建一个像这样的可变位图时,我的Android总是给我一些memery异常:
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
Run Code Online (Sandbox Code Playgroud)
当...的时候
bmp.width * bmp.height * 4 > getScaledMaximumDrawingCacheSize()
Run Code Online (Sandbox Code Playgroud)
异常跳出来.我测试过myImageView.measure(...),并myImageView.layout(...),并没有为我工作.(当我使用较小的图像测试相同的代码时,情况很好)
任何专家都知道如何解决这个问题或向我提出解决方案?谢谢!
也许不是最终的解决方案,但您是否尝试增加堆大小?
对于 Android 2.2 或更低版本:
dalvik.system.VMRuntime.getRuntime().setMinimumHeapSize(sizeInBytes);
Run Code Online (Sandbox Code Playgroud)
对于 Android 2.3 或更高版本:
android:largeHeap="true"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
616 次 |
| 最近记录: |