2

我希望 Paperclip 进行裁剪,而不是缩放(请参阅此摘录中的 :full1)

class Graphic < ActiveRecord::Base
  has_attached_file :image, :styles => { :full0 => "940x1000#" #want it to scale, and crop if neccessary
                                         :full1 => "940#", #want it to crop width, not scale
                                       }

我想 :full1 工作,但它没有。通过“工作”,我的意思是它应该裁剪图像的宽度,但对它的高度不做任何事情。原因是我正在上传网络截图,我希望它们被修剪到 940 像素宽(从中心),但它们的高度应该保持不变。就我对回形针的研究而言,我没有找到如何做到这一点。

显然 ImageMagick 非常支持它:http ://www.imagemagick.org/Usage/crop/#crop_strip但我不知道如何将它塞进轨道上的回形针中。

非常感谢!

4

2 回答 2

0

您可以将高度设置为大到离谱的高度,这样就不会出现问题了吗?

class Graphic < ActiveRecord::Base
  has_attached_file :image, :styles => { :full0 => "940x1000#" #want it to scale, and crop if neccessary
                                         :full1 => "940x9999999#", #want it to crop width, not scale
                                       }

我认为这将裁剪任何超过 940 像素的东西。

于 2013-03-20T06:18:57.333 回答
0

您可以用户转换图像处理的选项,以下将集中裁剪图像。

has_attached_file :profile_picture, :storage => :s3,                             
                                     :styles => { :medium => "", :thumb => ""},
                                      :convert_options => {
                                          :thumb => Proc.new { |instance| instance.thumnail_dimension },
                                          :medium => Proc.new { |instance| instance.thumnail_dimension(300) }
                                          }

def thumnail_dimension(size=100)
    dimensions = Paperclip::Geometry.from_file(profile_picture.queued_for_write[:original].path)
    min = dimensions.width > dimensions.height ? dimensions.height : dimensions.width
    "-gravity Center -crop #{min}x#{min}+0+0 +repage -resize #{size}x#{size}^"
  end
于 2013-03-20T07:26:38.987 回答