【问题标题】:PIL Image compressionPIL 图像压缩
【发布时间】:2018-05-29 23:40:29
【问题描述】:

我正在编写一个脚本来调整和优化要在网站上使用的图像(在本例中为 iPhone 图片)。到目前为止,我编写了这个简单的脚本,可以减少大约 35% 的文件大小,但我希望我可以进一步减小大小。有没有办法进一步优化这个脚本?任何帮助深表感谢!

from PIL import Image

img = Image.open('file location')
newImage = img.resize((1024, 768), Image.ANTIALIAS)         

newImage.save('new file location', optimize=True, quality=95)

newImage.show()                                               

【问题讨论】:

  • 一种选择是考虑较小的尺寸并将quality 设置为 85 或 75。
  • 我试过了,但不幸的是结果很小。
  • 在 Photoshop 中,通过将图像转换为 32 或 64 色(每个组件 5 到 6 位)调色板,然后将它们保存为 .PNG 或 .GIF 图像,我似乎获得了最佳尺寸缩减。我相信你可以用PIL/pillow 做同样的操作。新图片的预期用途是什么?
  • 我会试一试的!它们旨在用于网站,因此需要小文件。

标签: python image optimization python-imaging-library image-compression


【解决方案1】:

您可以尝试使用带有pyguetzli 的 Google 的 Guetzli 编码器,它通常会生成较小的 jpeg 文件但需要大量时间,比较一下:

  • 原件:9.4M
  • pil_1024*768_q95.jpeg: 638K
  • pil_1024*768_q85.jpeg: 404K
  • guetzli_1024*768_q95.jpg: 376K

原始 jpeg 文件来自 wiki common,作者 Diego Delso,CC BY-SA 4.0。

【讨论】:

  • 我尝试使用 pyguetzli 库(看起来很有希望),但是在尝试运行我的脚本时出现以下错误:ImportError: dlopen(/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyguetzli/_guetzli.abi3.so, 2): Symbol not found: __ZN7guetzli7ProcessERKNS_6ParamsEPNS_12ProcessStatsERKSsPSs Referenced from: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyguetzli/_guetzli.abi3.so Expected in: flat namespace in /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyguetzli/_guetzli.abi3.so
  • @Stefan 您的机器上的链接器似乎存在问题,您可以在pyguetzli's github 报告问题。
  • 我会继续这样做。希望这可以尽快解决,很高兴尝试这种方法!再次感谢您的帮助!
  • @Stefan 我从 homebrew 安装了 python3,可以成功安装 pyguetzli。
  • @georgesxh 这可能是问题所在。我使用从官方 python 网站下载的内容安装了它(虽然这不应该有这么大的差异,对吧?)。刚刚尝试使用自制软件安装 pyguetzli,但不幸的是,这产生了相同的结果。
猜你喜欢
  • 2019-08-06
  • 2021-10-25
  • 2016-05-02
  • 1970-01-01
  • 2011-10-31
  • 2020-02-29
  • 1970-01-01
  • 2013-08-07
相关资源
最近更新 更多