19

カメラから取得した画像を png 形式に圧縮してサイズを小さくしたいので、次のコードを使用しています。

compressedPictureFile = new File(imagePath);
Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
FileOutputStream fOut = new FileOutputStream(compressedPictureFile);
boolean compressed = bitmap.compress(Bitmap.CompressFormat.PNG, 0, fOut);
fOut.flush();
fOut.close();

問題は、compressedPictureFile が実際には元の画像よりも大きいことです (1 Mb から 6Mb)

私は何が欠けていますか?そして、これは画像のサイズを縮小する最良の方法ですか?

ありがとう

4

2 に答える 2

29

カメラで撮影した画像は、多くの場合、損失が多い 形式で保存されjpgますが、多くの色を含む画像 (写真など) には比較的適しています。

メソッドを使用してビットマップを圧縮すると、png. png 圧縮はロスレスですが、色数が少ない場合 (特定のロゴタイプやその他のグラフィックスなど) は、かなり小さなファイルサイズを実現できます。png ファイルの色の量と複雑さが増すと、ファイル サイズも大きくなります (これが、カメラが jpg を保存する理由です。ほとんどの写真では、品質とファイル サイズの比率が png よりもはるかに優れています)。

したがって、写真のファイルサイズを小さくしたい場合は、jpg 圧縮を使用して、品質パラメーターを試してみてください。画像の解像度を下げることもできます。これにより多くのスペースが節約されます (解像度が 50% のファイルは、データ サイズで約 25% になります)。

于 2013-04-23T19:21:52.533 に答える