Android 将位图保存到文件
我尝试在android fingerpaint应用程序中实现撤销和重做功能。我已尝试使用以下代码实现 错误 第一个活动Android 将位图保存到文件,android,image,bitmap,save,Android,Image,Bitmap,Save,我尝试在android fingerpaint应用程序中实现撤销和重做功能。我已尝试使用以下代码实现 错误 第一个活动 public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()) { case R.id.tools: ll.setVisibility(LinearLayout.VISIBLE); return true; case R.i
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case R.id.tools:
ll.setVisibility(LinearLayout.VISIBLE);
return true;
case R.id.import_pics:
getPhotos();
return true;
case R.id.save:
toJPEGFile();
return true;
case R.id.trash:
trash();
return true;
}
return false;
}
private void toJPEGFile() {
// TODO Auto-generated method stub
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/saved_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); // ERROR 341 LINE
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
我不知道哪里错了。请帮帮我。
提前谢谢
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
正如你所指出的,这是错误的一行
finalBitmap
尚未初始化
又名,它不是位图,它是一个空值。确保首先将位图加载到此变量中
finalBitmap = .... // assign finalBitmap.
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); // Then save to file
编辑:
阅读您的评论,一种方法是在onDraw
方法中执行以下操作:
canvas.drawBitmap(bitmap, 0, 0, paint);
finalBitmap = bitmap;
不过,我也不知道你们是从哪里得到位图的。这是另一个全局变量吗?也许你可以把finalBitmap.compress…改成位图。compress…我想你的finalBitmap肯定是空的…finalBitmap是341行,但我不知道怎么可以为空对不起,我在这里是begginer。/***受保护的void onDraw(画布){paint.setPathEffect(空);if(位图!=空){canvas.drawBitmap(位图,0,0,paint);for(MyCircle circle:circleList){//draw circles myCanvas.drawCircle(getCircleMidPointX(circle.firstX,circle.lastX),getCircleMidPointY(circle.firstY,circle.lastY),circle.radius,myPaint);}}****/这是我在画布上的位图。我如何分配它?@user2212477查看编辑。仍然不确定位图来自何处。
位图
也可能为空。值得一试,如果您在onCreate
或其他内容中初始化了它。我可以上传或下载代码以查看我的问题到底出在哪里吗?@user2212477我没有明天之前都可以使用android手机。但是你可以发送主java文件,我可以快速阅读。使用或其他什么。这里有CanvasView.java和FirstActivity.java
canvas.drawBitmap(bitmap, 0, 0, paint);
finalBitmap = bitmap;