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

Mis*_*hko 8 ruby-on-rails imagemagick paperclip ruby-on-rails-3

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

class Asset < ActiveRecord::Base
  has_attached_file :asset, :styles => { :thumb => "80x80#", 
                                         :medium => "1280x800>" }, ...
Run Code Online (Sandbox Code Playgroud)

当原始图片的大小为32x32:

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

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

mu *_*ort 6

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

(2)是因为Paperclip正在按照它所说的去做.Paperclip使用ImageMagick进行繁重的工作,样式尺寸只是ImageMagick几何字符串,只有一个修改:

Paperclip还添加了"#"选项(例如"50x50#"),它将调整图像大小以最大限度地适应尺寸,然后关闭其余部分(在中心加权).

你的:thumb风格使用"#"所以你告诉Paperclip你想要一个80x80的图像,即使图像必须缩放并裁剪到那里.您可以从尺寸字符串中删除"#",如果需要或适当,可以添加其他修改器之一.