Как сохранить изображение из 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();
     }
}); 

person wholee1    schedule 30.11.2011    source источник


Ответы (2)


Вы можете сохранить изображение всех видов (не только изображений), выполнив следующие действия:

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;
}


Этот код взят из одного из моих проектов, но я думаю, что его легко понять и использовать повторно. Надеюсь, это поможет вам.

person Anh Tuan    schedule 30.11.2011

Я не уверен, как это сделать из галереи или зачем вам это нужно, поскольку изображение уже сохранено на телефоне, если оно находится в галерее. Однако вы должны иметь возможность перезаписать файл, используя URI файла. Если вы снимаете изображение камерой, вы можете видеть, что у вас есть растровое изображение изображения. Его должно быть относительно легко сохранить, используя следующий фрагмент кода:

outStream = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
outStream.flush();
outStream.close();

Вам понадобится разрешение

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Для получения дополнительной информации попробуйте выполнить этот пример (именно там я нашел фрагменты кода). Они загружают свое изображение, но должны применяться те же концепции. http://android-er.blogspot.com/2010/07/save-file-to-sd-card.html

Надеюсь это поможет!

person J2N    schedule 30.11.2011
comment
Моя проблема в том, что у меня есть список элементов, и когда я нажимаю на элемент, страница переходит на страницу редактирования. После этого я делаю снимок с камеры и галереи на этой странице. Затем я вернусь на страницу к списку элементов после нажатия кнопки подтверждения. Изображение уже существует и как установить imageURI? - person wholee1; 30.11.2011