图片压缩,这个功能基本上每个网站都会去做一下。要不然,就有那样不按套路出牌的人给你去捣乱。
运行环境,同上一篇。
1.papercliper
2.p_w_picpathMagick
同样是papercliper 插接。然后还要加一个p_w_picpathMagick图片处理工具。意思就很明显了,papercliper 是调用的 p_w_picpathMagick的方法进行的图片压缩。
p_w_picpathMagick的安装只要到google上面搜索一下就会出现一大堆。所以我就不多说了。
下面具体说一下papercliper 是怎么压缩上传的图片的。
在papercliper配置完成之后都会写这样一段代码:
- has_attached_file :res,
- :storage => :filesystem,
- :styles => {:normal => '300x300>',:medium => '250x250',:thumb => '100x100#'}
上传的图片会放到public/system下。
下面是重点,看一下大概的压缩方式,不过在看之前有点要注意一下,p_w_picpathMagick这个工具有一点我不太明白,它只支持jpg的文件压缩。(各位看官有什么其余的想法不妨说出来,大家讨论一下。)
所以,在上传图片的同时要对图像文件进行转换,给强制转换成jpg文件。
举个例子:
用过的人都知道原图的存储文件是original,如果我只想对原图进行压缩,其余的图片不想进行压缩,那么要这样写:
- has_attached_file :res,
- :storage => :filesystem,
- :styles => { :original=>['',:jpg],:normal => '300x300>',:medium => '250x250',:thumb => '100x100#'}
跟上面代码不同的地方是,在这里的:styles 内加上了 :original=>['',:jpg],意思是将原图进行转换。转换为jpg格式后再进行压缩。
最后写上最重要的一句,papercliper调用p_w_picpathMagick的压缩方法。
- has_attached_file :res,
- :storage => :filesystem,
- :styles => { :original=>['',:jpg],:normal => '300x300>',:medium => '250x250',:thumb => '100x100#'},
- :convert_options => { :original => "-quality 10" }
到这里,就完成了。其中-quality 10 这个参数代表的意思是更改源文件的品质为多少。
之前尝试过,如果是 10 的话 可以将1.9M左右的图片压缩成70多K的jpg图片。
以此类推,就很好写了。
到这里所有的设置就完成了,赶快去试一下吧。
转载于:https://blog.51cto.com/douchunrong/1075291