图片压缩,这个功能基本上每个网站都会去做一下。要不然,就有那样不按套路出牌的人给你去捣乱。

运行环境,同上一篇。

1.papercliper

2.p_w_picpathMagick

同样是papercliper 插接。然后还要加一个p_w_picpathMagick图片处理工具。意思就很明显了,papercliper 是调用的 p_w_picpathMagick的方法进行的图片压缩。

p_w_picpathMagick的安装只要到google上面搜索一下就会出现一大堆。所以我就不多说了。

下面具体说一下papercliper 是怎么压缩上传的图片的。

在papercliper配置完成之后都会写这样一段代码:

 

 
  
  1. has_attached_file :res
  2.                 :storage => :filesystem
  3.                 :styles => {:normal => '300x300>',:medium => '250x250',:thumb => '100x100#'

上传的图片会放到public/system下。

下面是重点,看一下大概的压缩方式,不过在看之前有点要注意一下,p_w_picpathMagick这个工具有一点我不太明白,它只支持jpg的文件压缩。(各位看官有什么其余的想法不妨说出来,大家讨论一下。)

所以,在上传图片的同时要对图像文件进行转换,给强制转换成jpg文件。

举个例子:

用过的人都知道原图的存储文件是original,如果我只想对原图进行压缩,其余的图片不想进行压缩,那么要这样写:

 

 
  
  1. has_attached_file :res, 
  2.                 :storage => :filesystem, 
  3.                 :styles => { :original=>['',:jpg],:normal => '300x300>',:medium => '250x250',:thumb => '100x100#'} 

跟上面代码不同的地方是,在这里的:styles 内加上了 :original=>['',:jpg],意思是将原图进行转换。转换为jpg格式后再进行压缩。

最后写上最重要的一句,papercliper调用p_w_picpathMagick的压缩方法。

 

 
  
  1. has_attached_file :res
  2.                 :storage => :filesystem
  3.                 :styles => { :original=>['',:jpg],:normal => '300x300>',:medium => '250x250',:thumb => '100x100#'}, 
  4.                 :convert_options => { :original => "-quality 10" } 

到这里,就完成了。其中-quality 10 这个参数代表的意思是更改源文件的品质为多少。

之前尝试过,如果是 10 的话 可以将1.9M左右的图片压缩成70多K的jpg图片。

以此类推,就很好写了。

到这里所有的设置就完成了,赶快去试一下吧。