PaperClip 3.4:如何重新生成图像_original已被删除?

时间:2013-08-01 01:29:54

标签: ruby-on-rails paperclip

是否有人知道是否可以告诉paperclip使用_original以外的文件来重新生成缩略图?

我们的_原始文件已不再可用,我们希望因样式大小更改而重新生成缩略图。

我不确定从哪里开始看这个。

1 个答案:

答案 0 :(得分:0)

好吧,我没有广泛测试这个,但这样的事情应该有用。这假设您的模型定义为:

class Image < ActiveRecord::Base
  has_attached_file :attachment, styles: { small: "300x300>", large: "100x100>" }
end

这是一个使用open-uri将URL视为文件流的脚本,因此您可以通过URL提取large样式,更新模型,然后重新处理每个图像。

require 'open-uri'

Image.find_each do |image|
  large_image = open(image.attachment.url(:large)) {|f| f.read }

  image = large_image
  image.reprocess!
end

同样,我只用这个进行了一些基本测试,我不是100%image =任务需要的不仅仅是文件流,但我确实测试了一个图像,它似乎工作。它保留了所有现有图像数据,并在重新处理所有现有图像时使用large样式并将其添加为原始图像。

希望有所帮助。祝你好运。