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

Dan*_*y Y 17 compression android 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();
Run Code Online (Sandbox Code Playgroud)

问题是compressedPictureFile实际上比原始图像(从1 Mb到6Mb)更大

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

谢谢

Jav*_*ave 24

使用相机拍摄的图像很可能存储在jpg-format中,这是有损的,但对于具有大量颜色的图像(例如照片)则相对较好.

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

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