android - 在Android中将 Canvas 保存为图像

标签 android canvas

我将类从DrawingView扩展到View并在其上绘制路径一切正常
但当我试图将画布保存为图像时,它不起作用。
这是我正在尝试的代码。

// drawView is an object of DrawingView class
drawView.setDrawingCacheEnabled(true);
                String imgSaved = MediaStore.Images.Media.insertImage(
                        getContentResolver(), drawView.getDrawingCache(),
                        UUID.randomUUID().toString()+".png", "drawing");
                if(imgSaved!=null){
                    Toast savedToast = Toast.makeText(getApplicationContext(),
                            "Drawing saved to Gallery!", Toast.LENGTH_SHORT);
                    savedToast.show();
                }
                else{
                    Toast unsavedToast = Toast.makeText(getApplicationContext(),
                            "Oops! Image could not be saved.", Toast.LENGTH_SHORT);
                    unsavedToast.show();
                }
                drawView.destroyDrawingCache();

我总是收到消息Oops! Image could not be saved.这段代码有什么问题为什么不保存它?

最佳答案

答案取自Stackoverflow Answer
但是需要一些小的改变,比如有拼写错误file.seperatorile.separator一起改变,并且没有try块。
只需将content更改为drawView
最终代码:

try {
    drawView.setDrawingCacheEnabled(true);
    Bitmap bitmap = drawView.getDrawingCache();
    File f = null;
    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
         File file = new File(Environment.getExternalStorageDirectory(),"TTImages_cache");
         if(!file.exists()){
             file.mkdirs();
         }
         f = new File(file.getAbsolutePath()+file.separator+ "filename"+".png");
    }
    FileOutputStream ostream = new FileOutputStream(f);
    bitmap.compress(Bitmap.CompressFormat.PNG, 10, ostream);
    ostream.close();
} catch(Exception e){
    e.printStackTrace();
}

关于android - 在Android中将 Canvas 保存为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44470783/

相关文章:

java - 如何将 Android 应用程序连接到 API 并在列表中显示数据?

android - 使用 5 次后阻止使用

android - 手动添加 Volley 到 android studio 项目,gradle offline

android - 获取其他应用程序图标 uri?

javascript - 清除 Canvas 后不绘制图像(html5 Canvas )

javascript - 使重叠的 d3.js 雷达图元素透明

Android camera2 输出到 ImageReader 格式 YUV_420_888 仍然很慢

HTML5 Canvas 检查器?

javascript - 为什么在旋转之前必须先平移才能在 Canvas 中围绕自身旋转元素?

javascript - 清除 Canvas 不起作用