bitmap.compress(Bitmap.CompressFormat.PNG,0,fOut)使图像大小比原始大

时间:2013-04-23 19:02:59

标签: android compression image-resizing bitmapfactory

我想将从相机拍摄的图像压缩为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)更大

我错过了什么? 这是减小图像大小的最佳方法吗?

由于

2 个答案:

答案 0 :(得分:24)

使用相机拍摄的图像很可能以jpg格式存储,这种格式有损,但对于有大量颜色的图像(如照片)则相对较好。

使用您的方法压缩位图时,请将其保存为png。 png压缩是无损的,但是当颜色很少时(例如在某些标识或其他图形中),可以实现非常小的文件大小。当png文件中的颜色数量和复杂程度增加时,文件大小也会增加(这就是相机保存jpg的原因 - 对于大多数照片,质量/文件大小比png要好得多。)

因此,如果您想减少照片的文件大小,请使用jpg压缩并试验质量参数。 您可能还想降低图像的分辨率,因为这会节省大量空间(分辨率为50%的文件在数据大小上约为25%)。

答案 1 :(得分:0)

它在我的应用上运行良好

"details" : {
     "name" : "vinay",
     "amount" : "abc"
}