ahm*_*eek 2 ruby optimization ruby-on-rails image imagemagick
我们在网站内的许多地方使用图片:
等等.
我有控制权来确保图像不超过5mb.但是,页面需要很长时间才能加载.
我们使用Ruby来生成API和Angular.我们进行了大量优化,我们开始使用CDN来降低js文件的负载.
图像是现在唯一的问题.我不想像paperclip我们已经使用的那样使用Gem dragonfly.
我可以使用后台进程处理每个上传的图像,但我寻求一种更干净,更方便的方式.
我会推荐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质量进行二进制搜索.