bitmap.compress(Bitmap.CompressFormat.PNG,0,fOut)使图像尺寸比原来的大

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

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

谢谢

Solutions Collecting From Web of "bitmap.compress(Bitmap.CompressFormat.PNG,0,fOut)使图像尺寸比原来的大"

使用相机拍摄的图像很可能以jpg格式存储,这是有损的,但是对于具有许多颜色的图像(如照片)来说相对较好。

当您使用您的方法压缩位图时,将其保存为png 。 PNG压缩是无损的,但是当颜色很less的时候(比如某些标识或其他graphics),可以实现很小的文件大小。 当一个PNG文件中的颜色和复杂度增加时,文件大小也会增加(这就是为什么相机节省了一个JPG文件 – 对于大多数照片,质量/文件大小比PNG好得多)。

所以,如果你想减less照片的文件大小,使用jpg压缩和质量参数的实验。 您可能还想要降低图像的分辨率,因为这将节省大量空间(具有50%分辨率的文件在数据大小上将约为25%)。