Paperclip中调整原始图像的大小

19

Paperclip将原始图像存储在 "original" 文件夹中。有没有办法调整原始图像的大小?我想将原始图像缩小以节省磁盘空间。

因此,例如,如果访问者上传具有2592x1936的照片,则希望将其存储为1024x1024,就像我们为 :styles 中的 :thumb 图像设置尺寸一样。

更新(已解决)

我发现如何在上传时自动调整原始图像的大小。只需要将 :original 添加到 styles 中即可:

class MyModel < ActiveRecord::Base
    has_attached_file :photo, 
        :styles => { :original => "1024x1024>", :thumb => "150x150>" }
end

1
希望我能想到那个。谢谢。 - vise
关于ImageMagick中的resize语法的详细信息,您可以在此处找到更多详细信息:http://www.imagemagick.org/Usage/resize/#resize - Pierre-Adrien
1
我点了个赞给你。但我希望我能做两次。一次是为了问题,一次是为了最佳答案。 - alybadawy
1个回答

2

我不确定Paperclip是否可以自行进行调整大小。您可能需要查看RMagick来完成此操作。我建议尝试使用RMagick(或MiniMagick),然后使用before_save回调执行您编写的:resize方法,以告诉RMagic调整图像大小。您的方法可能如下所示:

class Image < ActiveRecord::Base
  belongs_to :profile
  before_save :resize

  def resize
    self.image = self.image.resize "1024x1024"
  end
end

或者

class Image < ActiveRecord::Base
  belongs_to :profile
  before_save do
    self.image = self.image.resize "1024x1024"
  end
end

Caley Woods,谢谢你的回答,但我想知道是否有一种方法可以仅使用Paperclip调整原始图像的大小。它在创建:thumb图像时进行调整大小,也许有一种方法可以调整:original的大小。 - Evgenii
考虑到这一点,您可能只需要fork paperclip并修改源代码,使:original成为您想要的大小。这就是开源的伟大之处。 - Caley Woods
同样,正如 Evgeny 在 这个 asciicast 中指出的那样,您需要安装 imagemagick 以便通过 paperclip 进行调整大小,格式为 has_attached_file :photo, :styles => { :small => "150x150>" }。此外,您将希望在此处阅读,因为它会指出您可以在大小调用后使用哪些字符来处理宽高比。 - Caley Woods

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接