私はこれを実行してみてください:ファイルサイズを変更せずにビットマップを回転するにはどうすればよいですか?
Bitmap bitmapOrg = BitmapFactory.decodeFile("/sdcard/"+ photoName + ".jpg");
int width = bitmapOrg.getWidth();
int height = bitmapOrg.getHeight();
Matrix matrix = new Matrix();
matrix.postRotate(90);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, width,
height, matrix, true);
FileOutputStream os;
try {
os = new FileOutputStream(String.format(
"/sdcard/" + photoName + "-rotate.jpg",
System.currentTimeMillis()));
resizedBitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);
回転ファイルサイズ>元のファイルサイズを、回転ファイル解像度= 96 DPIが、元のファイル= 72 DPIからです。なぜこれが起こっていて、それを修正するのですか?
動作しません。私は同じ結果を得る。 –
@shermanこれは、ファイルのサイズではなく、ピクセルの密度にのみ影響します。 "BitmapFactoryから返されたビットマップが別のビット深度にある可能性があり、ピクセルごとのアルファを失う可能性があります(例:JPEGは不透明ピクセルのみをサポートしています)。さらに、 '100'の品質を指定しているため、入力よりも出力が大きくなる可能性があります。 –
はい、そうですが、濃度が変わらないのはなぜですか? –