Rails 的最佳图像优化技术

Best image optimization technique for Rails

我们在网站的许多地方使用图片:

  1. header 文章图片
  2. 头像的图片

等等。

我可以控制图像不超过 5mb。但是,页面需要很长时间才能加载。

我们使用 Ruby 生成 API 并在其之上使用 Angular。我们做了很多优化,我们开始使用 CDN 来降低 js 文件的负载。

图像是现在唯一的问题。我不想使用 paperclip Gem,因为我们已经使用 dragonfly

我可以使用后台进程来处理每张上传的图片,但我寻求一种更干净、更方便的方式。

您可以使用 ImageMagick 批量调整大小

mogrify -resize 50% *

我会推荐 ImageMagick 来完成这项任务。您可以使用 -strip 选项删除 EXIF headers 和其他无关信息以减小文件大小。

convert input.jpg -strip output.jpg

或者用mogrify像这样一次性完成所有图片

mogrify -strip *.jpg 

您还可以指定较低的质量来减小文件大小,就像这样

mogrify -quality 70% *.jpg

不过我发现更好的选择是指定最大文件大小(以 kB 为单位)并让 ImageMagick 找出它可以达到的最佳质量,同时不超过该文件大小,像这样:

mogrify -strip -define jpeg:extent=100kb *.jpg

这将去除 EXIF 信息并将文件大小减少到最大 100kB。


如果您想要一种与 Python 类似的方法,我写了一个非常有效的答案 here。它对满足最大尺寸要求的 JPEG 质量进行二进制搜索。