0

長さと幅を変更して画像のサイズを縮小しようとしていますが、メガバイト単位で同じサイズのままで、半分の大きさでもさらに大きくなることがあります。

String compressPath = Environment.getExternalStorageDirectory()+"/test2.jpg";
FileInputStream in = new FileInputStream(path);
Bitmap fullSizeBitmap = BitmapFactory.decodeStream(in);
Bitmap resized = Bitmap.createScaledBitmap(
    fullSizeBitmap, 
    (int)(fullSizeBitmap.getWidth()*0.5), 
    (int)(fullSizeBitmap.getHeight()*0.5), 
    true
);

FileOutputStream mOutputStream = new FileOutputStream(compressPath);
resized.compress(Bitmap.CompressFormat.PNG, 100, mOutputStream);

どうしたの?クオリティ下げなきゃいけないの?

4

1 に答える 1

5

Bitmap の Android ドキュメントによると:

quality コンプレッサーへのヒント、0-100。0 は小さいサイズで圧縮することを意味し、100 は最大品質で圧縮することを意味します。ロスレスの PNG などの一部の形式は、品質設定を無視します。

元の入力は JPG ですが、PNG に出力しています。JPG にはアーティファクトを導入する品質の低下が常にあるため、生成された PNG ファイルは変換時にサイズが大きくなります。代わりに、80-100 品質の JPG として保存してみてください。

また、私のテストでは、PNG への圧縮は JPG への圧縮よりも 2 ~ 5 倍の時間がかかります。これは、PNG 圧縮がソフトウェアで行われ、JPG がハードウェアで行われるためです。そのため、ほとんどの画像は JPG に圧縮する方がよいでしょう。

于 2013-08-06T15:13:19.530 に答える