私は「画像エディタ」のようなアプリケーションをやっています。デフォルトのカメラ インテントを使用して画像をキャプチャしました。以前は URI を解析し、それを次のようなイメージ ビューに設定していました。
imgCaptured.setImageURI(Uri.parse(filePath));
この生の画像を使用すると、メモリ不足のエラーが発生することがあります。そこで、次を使用して画像をデコードすることにしました。
「スタックオーバーフローから取得」
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 8;
preview_bitmap = BitmapFactory.decodeStream(is, null, options);
private Bitmap decodeFile(File f) {
try {
// Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f), null, o);
// The new size we want to scale to
final int REQUIRED_SIZE = 95;
// Find the correct scale value. It should be the power of 2.
int scale = 1;
while (o.outWidth / scale / 2 >= REQUIRED_SIZE
&& o.outHeight / scale / 2 >= REQUIRED_SIZE)
scale *= 2;
// Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
} catch (FileNotFoundException e) {
}
return null;
}
デコードした画像を使用すると、出力の品質が良くありません。なんとなくぼやけて見える。鮮明な画像が欲しい!ImageViewに設定した後。別のビューをドラッグ アンド ドロップする必要があります。
- 上記を達成するにはどうすればよいですか?
- これを行う良い方法は何ですか?