如何在上传时告诉Paperclip不保存原始文件?或者更好的是,将文件的缩放版本存储为原始文件?
答案 0 :(得分:44)
我相信你可以简单地定义一种风格:原创让回形针替换那个尺寸的原件。
:styles => { :original => '300x168>', :cropped_thumb => {:geometry => "115x70#", :jcrop => true}, ...}
答案 1 :(得分:4)
Cris G的解决方案在大多数简单案例中可能都不错,但它有局限性。 考虑到:风格:原始Paperclip流程首先是其他所有,所以更新后:原始图像(现在小得多)将成为后续处理的来源。 因此,你被迫保持:最佳分辨率的原始风格。 由于您需要使用处理器裁剪图像,情况会变得更糟:这是您真正需要真正原始质量的情况。 )
所以我会建议你有点原始(需要了解如何获得模型的每个附件)解决方案:
after_save :reprocess_attach
private
def reprocess_attach
if self.<atch_name>.present? && Pathname.new(self.<atch_name>.path).exist?
self.<atch_name>.save
File.unlink(self.<atch_name>.path)
end
end
它并不关心舞台后面的处理方式。它只会杀死原始文件)
答案 2 :(得分:0)
Paperclip默认保存原件,但我相信,如果您只是从迁移中删除它,那么它就不会尝试保存它。
我在模型上保存了缩放原件,以便用户以后可以编辑其图像。我的模型看起来像这样:
:styles => { :cropped_thumb => {:geometry => "115x70#", :jcrop => true}, :resized_thumb => {:geometry => "115x70>"}, :deal => {:geometry => "64x56#"},
:cropped_large => {:geometry => "#{PHOTO_IMAGE_WIDTH}x#{PHOTO_IMAGE_HEIGHT}#", :jcrop => true},
:resized_large => {:geometry => "#{PHOTO_IMAGE_WIDTH}x#{PHOTO_IMAGE_HEIGHT}>"},
:orig => '300x168>', #this is the scaled original that I call later
:cropped_orig => {:geometry => '300x168#', :jcrop => true},
:resized_orig => {:geometry => '300x168>'} },
:processors => [:jcropper]