android – 如何在拍照后从ImageView保存图像
作者:互联网
我正在从画廊中挑选照片或者用相机拍照.
如果我将图片放入我的imageView,然后单击确认按钮,我该如何保存该图片?
我必须使用saveState()吗?
请发表一些评论.
谢谢.
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK) return;
switch (requestCode)
{
case PICK_FROM_CAMERA:
Bitmap selectedImage = (Bitmap) data.getExtras().get("data");
selectedImage = Bitmap.createScaledBitmap(selectedImage, 80, 80, false);
mImageView.setImageBitmap(selectedImage);
break;
case PICK_FROM_GALLERY:
Uri selectedImageUri = data.getData();
selectedImagePath = getPath(selectedImageUri);
System.out.println("Image Path : " + selectedImagePath);
mImageView.setImageURI(selectedImageUri);
break;
}
}
private void saveState()
{
String name = (String) nameEdit.getText().toString();
String category = (String) categoryEdit.getText().toString();
String expired_date = (String) expired_Date_Btn.getText().toString();
ImageView image = (ImageView) mImageView.setImageURI(); //how to edit?
if(mRowId == null)
{
long id = mDbHelper.insertItem(category, name, expired_date);
if(id>0)
{
mRowId = id;
}
}
else
{
mDbHelper.updateItem(mRowId, category, name, expired_date);
}
}
//How can I save image after clicking button?
confirmButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v){
setResult(RESULT_OK);
finish();
}
});
解决方法:
您可以按照以下步骤保存所有View(不仅是ImageView)的图像:
1.获取视图的位图:
public Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.draw(c);
v.invalidate();
return b;
}
2.将它保存在您的SD卡文件中(或任何您想要的地方):
protected String saveBitmap(Bitmap bm, String name) throws Exception {
String tempFilePath = Environment.getExternalStorageDirectory() + "/"
+ getPackageName() + "/" + name + ".jpg";
File tempFile = new File(tempFilePath);
if (!tempFile.exists()) {
if (!tempFile.getParentFile().exists()) {
tempFile.getParentFile().mkdirs();
}
}
tempFile.delete();
tempFile.createNewFile();
int quality = 100;
FileOutputStream fileOutputStream = new FileOutputStream(tempFile);
BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
bm.compress(CompressFormat.JPEG, quality, bos);
bos.flush();
bos.close();
bm.recycle();
return tempFilePath;
}
这些代码来自我的一个项目,但我认为它们易于理解和重用.希望它会对你有所帮助.
标签:savestate,android,image,camera 来源: https://codeday.me/bug/20190902/1792869.html