私のアプリケーションでは、ACTION_IMAGE_CAPTURE
インテントを使用して写真を撮影しています。カメラが戻ると、ファイルがチェックされ、回転が縦向きの場合、ビットマップが回転され、次のコードでディスクに保存されます。
BitmapFactory.Options options = new Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath(), options);
if (bmp != null) {
Matrix m = new Matrix();
m.postRotate(90);
Bitmap rotated = Bitmap.createBitmap(bmp, 0, 0, bmp.getWidth(), bmp.getHeight(), m,
true);
rotated = rotated.copy(Bitmap.Config.RGB_565, false); // added based on comment
f.delete();
FileOutputStream fos = new FileOutputStream(f);
rotated.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
}
これは正常に機能しますが、ファイルサイズは回転していない画像の2倍です。BitmapFactory.Options
密度を0に、スケールをfalseに設定しようとしましたが、どちらも目的の効果がありません。変換する画像を、ディスクからロードする画像と同じサイズにしたい。これが起こらないようにする何かが私のコードにありますか?