1

ギャラリーから画像を取得し、それをクロップするインテントに渡すこのコードがあります。すべて正常に動作しますが、これによりギャラリーに新しいトリミングされた画像が作成されるか、古い画像がトリミングされた画像に置き換えられますが、ユーザーが再度変更するまで、新しいトリミングされた画像をプログラムの一時メモリに保持します。

これが私のコードです:

Uri selectedImage = imageReturnedIntent.getData();

final Intent intent = new Intent("com.android.camera.action.CROP");
                intent.setData(selectedImage);
                intent.putExtra("outputX", width);
                intent.putExtra("outputY", height);
                intent.putExtra("aspectX", width);
                intent.putExtra("aspectY", height);
                intent.putExtra("scale", true);
                intent.putExtra("noFaceDetection", true);
                intent.putExtra("output", selectedImage); // with this enabled it replaces the original image and without it creates new one in gallery.
                startActivityForResult(intent, 23);
4

1 に答える 1

5

後で削除する一時ファイルを作成する必要があります。

    (...)
    File tempFile = File.createTempFile("crop", "png", Environment
                                            .getExternalStorageDirectory());
    Uri tempUri = Uri.fromFile(tempFile);
    intent.putExtra("output", tempUri);
    intent.putExtra("outputFormat", "PNG");
    (...)

    // then, when the intent returns

    // read cropped image from tempUri
    (...)
    // finally delete the temp file
    tempFile.delete();
于 2012-08-31T20:29:21.977 に答える