Rails的最佳图像优化技术

ahm*_*eek 2 ruby optimization ruby-on-rails image imagemagick

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

  1. 文章的标题图片
  2. 头像的形象

等等.

我有控制权来确保图像不超过5mb.但是,页面需要很长时间才能加载.

我们使用Ruby来生成API和Angular.我们进行了大量优化,我们开始使用CDN来降低js文件的负载.

图像是现在唯一的问题.我不想像paperclip我们已经使用的那样使用Gem dragonfly.

我可以使用后台进程处理每个上传的图像,但我寻求一种更干净,更方便的方式.

Mar*_*ell 5

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

convert input.jpg -strip output.jpg
Run Code Online (Sandbox Code Playgroud)

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

mogrify -strip *.jpg 
Run Code Online (Sandbox Code Playgroud)

您还可以指定较低的质量来减少文件大小,如下所示

mogrify -quality 70% *.jpg
Run Code Online (Sandbox Code Playgroud)

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

mogrify -strip -define jpeg:extent=100kb *.jpg
Run Code Online (Sandbox Code Playgroud)

这将删除EXIF信息,并将文件大小减少到最大100kB.


如果你想要一种与Python类似的方法,我写了一个在这里工作得很好的答案.它对满足最大尺寸要求的JPEG质量进行二进制搜索.