Rails carrierwave上传图片无损压缩
Hello!
如果觉得不错的话,并且不吝转载时,请顺便添加上这篇文章的链接
http://www.hi-ruby.com/posts/1014
Google best-practices 上建议对JPEG和PNG文件进行lossless compression,尽可能的减小图片大小
上传图片,对于是再寻常不过的需求了,之前的项目说实话并不太注重图片,上传时候只是限制最大的width & height, 并没有进行压缩,最近老外总提这事,只好做了
具体做法:
1、由于使用piet进行无损压缩,需要事先安装好 optipng 和 jpegoptim, 这两个包是用来对png和jpg图片进行压缩的主力,piet则是在此基础上封装出的ruby套件.
ubuntu:
sudo apt-get install optipng jpegoptim
centos: 比较麻烦,请看下面两篇文章:
2、之前上传使用的是carrierwave, 这次添加无损压缩使用的是 piet
# 文件和图片处理 gem 'carrierwave' gem 'mini_magick' # 无损压缩 gem 'piet'
3、修改 carrierwave uploader
# encoding: utf-8 class ImageUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick include CarrierWave::MimeTypes include Piet::CarrierWaveExtension process :optimize # xxxxxxx end
4、结果
发布后,经测试 同一个jpg图片,之前上传后的大小是38KB, 无损压缩之后的大小为8KB, 效果还是比较明显的,节省掉带宽,就相当于省下钱了,这么想想,还是很值得的。
对于没有用过carrierwave的开发者,可以去以下地址浏览 http://railscasts-china.com/episodes/9-file-uploading-by-carrierwave