Rails 的最佳图像优化技术
Best image optimization technique for Rails
我们在网站的许多地方使用图片:
- header 文章图片
- 头像的图片
等等。
我可以控制图像不超过 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 质量进行二进制搜索。
我们在网站的许多地方使用图片:
- header 文章图片
- 头像的图片
等等。
我可以控制图像不超过 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 质量进行二进制搜索。