我将类从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.seperator
和ile.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/