在Paperclip和RMagick中将现有图像调整为新样式

64

我一直在使用Paperclip来上传和自动调整大小Rails应用程序中的照片,我很喜欢它。唯一的问题是,每隔几个月我的疯狂经理都会决定要以新的尺寸显示照片。因此,我在我的Photo模型中添加了一个新的样式,对于新照片来说一切都很好,但现有的照片现在成为了一个问题。现在,我需要一种编程方式来调整现有照片的大小,也许有一些Paperclip技巧可以做到这一点?如果不必写RMagick并编写脚本,我真的不想要。

2个回答

89

您想要使用Paperclip::Attachment的reprocess!方法。请参见文档

class User < ActiveRecord::Base
  has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" }
end

# Console...
>> User.find_each { |u| u.avatar.reprocess! }

此外,根据reprocess!方法之前的评论,有一个paperclip:refresh Rake任务,可能更容易实现。


5
这是重新生成您的Paperclip样式的文档。 https://github.com/thoughtbot/paperclip/wiki/Thumbnail-Generation 命令应该是 rake paperclip:refresh:YOUR_STYLE_HERE CLASS=User - Hengjie
如果您有一个多态模型来处理所有的Paperclip附件,例如称为“Picture”,那么您需要执行以下操作:Gallery.pictures.file.reprocess! - Joshua Pinter
这对我起作用了,而rake任务失败了(找不到paperclip yml文件)。 我继承了这个应用程序,似乎它没有使用yml文件。 - Dogweather

31

6
您可以为一个模型执行以下操作:rake paperclip:refresh:missing_styles CLASS=YourModelName,或者对所有模型执行相同的操作。请注意,这将刷新缺失的图片样式。 - Arcolye
1
不要忘记在任务中设置Rails环境。rake paperclip:refresh:missing_styles CLASS=YourModelName RAILS_ENV=production - Pramod Solanky

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