Paperclip:如果图像足够大,如何调整图像大小?

时间:2011-07-18 07:10:05

标签: ruby-on-rails ruby-on-rails-3 imagemagick paperclip

我使用Paperclip来调整像这样的图片:

class Asset < ActiveRecord::Base
  has_attached_file :asset, :styles => { :thumb => "80x80#", 
                                         :medium => "1280x800>" }, ...

当原始图片的尺寸为32x32时:

  1. 生成的medium图片大小相同(即32x32),但文件稍有不同,图片看起来有点变化。那是为什么?

  2. 生成的thumb尺寸为80x80(它看起来拉伸到适合此尺寸)。 当图片太小时,我怎么能避免调整图片大小。假设原始图片的尺寸在widthheight变量中。

1 个答案:

答案 0 :(得分:6)

(1)可能是因为Paperclip正在解码JPEG然后编写/编码新的JPEG。 JPEG是一种有损格式,因此每种编码都会降低图像质量。您可以使用convert_options来调整JPEG quality,但您可能不得不接受JPEG格式的降级。

(2)是因为Paperclip正在按照它所说的去做。 Paperclip使用ImageMagick进行繁重的工作,样式尺寸只有ImageMagick geometry strings one modification

  

Paperclip还添加了“#”选项(例如“50x50#”),它会调整图像的大小以最大限度地适应尺寸,然后裁掉其余部分(在中心加权)。

您的:thumb样式使用“#”,因此您告诉Paperclip您想要一个80x80的图像,即使图像必须缩放并裁剪到达那里。您可以从维度字符串中删除“#”,如果需要或适当,请添加the other modifiers之一。