我正在绘制画布,只是尝试将画布保存为JPEG。我已经在某些设备上对此进行了测试,并注意到它在ICS上似乎不起作用,并在尝试以下代码时给出了UnsupportedOperationException错误:
Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
canvas.setBitmap(bitmap);
// Drawing to canvas here
OutputStream stream = new FileOutputStream("/sdcard/test.jpg");
bitmap.compress(CompressFormat.JPEG, 100, stream);
stream.close();
这一切都在onDraw方法中完成,错误在canvas.setBitmap(位图)上。
这在我的Droid X(2.3)和Tab 10.1(3.1)上工作正常,但在运行ICS时我的Galaxy Nexus(4.0)和我的Tab 10.1失败了。我可能只是在寻找一些非常简单的东西。我大部分时间都在努力工作而没有取得任何进展。任何想法将不胜感激!
更新: 我关闭了“强制GPU渲染”,现在它似乎工作了。必须有更好的方法来做到这一点。
答案 0 :(得分:1)
在设置中禁用“强制GPU渲染”已经解决了问题,即使可能有更好的方法。
答案 1 :(得分:0)
我很确定问题是strict mode已启用。由于bitmap.compress
方法执行文件I / O,因此严格模式将对您在主线程上执行此类操作的事实感到不满。例如,尝试使用AsyncTask
在后台线程上执行压缩步骤。或者,如果您不关心可能在UI中引入无响应的时刻,只需转动严格模式。