其他分享
首页 > 其他分享> > android – 如何在拍照后从ImageView保存图像

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