不失质量的压缩图像

5
我正在开发一个Android应用程序,可以拍照并保存图片。我希望通过压缩图像来加快上传速度。但是,当我使用BitmapCompress进行压缩时,图像似乎失去了其质量。在这里:

原始图像

enter image description here

压缩后的图像

enter image description here

压缩之前: 尺寸- 1920X1920 文件大小- 2.94MB

压缩之后: 尺寸- 960X960 文件大小- 644KB

我想知道是否有一种方法,或者说一种库能够解决我的问题? Instagram似乎可以在不失去图像质量的情况下完成此压缩操作。


1
你的显示器上显示的是你吗? - Neel
@Neil 你是什么意思? - jofftiquez
@ArtooDetoo 我尝试调整大小,看起来还不错,但我想让它像Instagram一样,原始图像和输出图像具有相同的尺寸,并且牺牲了一点点质量,但输出文件的文件大小似乎远离原始文件。 - jofftiquez
1
你有两个选项:无损PNG(很少压缩,质量很好)和JPEG(有损压缩,质量较差,取决于压缩比)。对于JPG,我会选择高质量的压缩比,如85(质量%)或更高(质量更高,压缩更少)。 - Phantômaxx
2
这是一个妥协的问题...选择最小令人满意的质量,并接受所设置的压缩给出的最终大小... - Phantômaxx
显示剩余3条评论
4个回答

3

压缩文件总会以某种方式降低质量。

以下是您可以采取的措施:

  • 如果您尚未使用PNG格式,请更改压缩格式。
  • 找到大小和质量之间完美的折衷方案。

我会调查一下。谢谢 :) - jofftiquez

2
我同意@Saret的观点,使用BitmapCompress可以在保持良好质量的同时减小文件大小。你可以通过80%的压缩比例而不进行缩放,从3MB的照片中得到大约800-900KB的照片。如果你裁剪照片,可以获得更好的效果。
如果你不关心缩放和深度细节不重要,我强烈推荐以下库:

0
Bitmap yourbitmap

[...]

OutputStream os = new FileOutputStream(filename); 
yourbitmap.compress(CompressFormat.JPEG, 80, os);  // 80% compression

这将使您的图像保持轻盈且质量良好。

0

一些值得关注的关键词:

  • 'EXIF去除'
  • '无损压缩'

解释:

删除部分EXIF数据

您可以尝试通过删除存储在图像中的EXIF数据来减小文件大小。在许多情况下,EXIF数据占用了大量空间,并且通常包含用户可能不需要的更多信息。

快速谷歌搜索显示以下工具可能有助于删除EXIF数据。有Windows和Mac版本:

http://www.exifpurge.com/

关于一款可以在您的Android构建过程中使用的工具,需要进一步搜索。但至少“EXIF去除Android库”是一个很好的关键词开始。

无损压缩

另一种选择是研究无损压缩。我在网站开发中曾经使用过它们。在我的情况下,我使用了命令行一起使用“grunt”构建工具的库。

一个快速的谷歌搜索显示了以下直接从您的浏览器工作的网站。

https://compressor.io/compress


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接