0

ギャラリーを開いて、選択した画像のパスを取得しています。次に、このパスからビットマップを作成し、bitmap.compress()関数を使用してこのビットマップを内部ストレージに保存します。ImageViewのsetImageUri()関数でこの保存されたビットマップのパスを指定することにより、この画像をImageViewに表示することは可能ですか?

Bitmap bmap = BitmapFactory.decodeFile(selectedImagePath);
FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
bmap.compress(CompressFormat.PNG, 100, fos);
fos.close();

ここで、fileNameは、Stringに変換された整数(実際にはウィジェットのID)です。

この画像を次のようにImageViewにロードすることは可能でしょうか?

File internalFile = getFileStreamPath(fileName);
Uri internal = Uri.fromFile(internalFile);
imageView.setImageUri(internal);

setImageBitmap()関数を使用して画像を設定できることはわかっていますが、ファイルからビットマップを読み取り、それをParcelオブジェクトに渡す必要があります。これにより、画像が大きい場合にバインダートランザクションの失敗エラーが発生します。ImageViewで画像を表示するウィジェットを作っています。

4

1 に答える 1

1

setImageUri() メソッドは、そのように使用することを意図していません。この質問と回答を参照してください。最良の方法は、setImageBitmap() を呼び出す前にビットマップをビューにスケーリングすることです。たとえば、Bitmap.createBitmap() を Matrix パラメータとともに使用することによってです。

于 2012-08-11T15:27:11.623 に答える