我在数据库中有一个大小列表,我需要调整图像大小,然后使用carrierwave上传它们。
有没有办法使用carrierwave来处理调整大小?现在我正在使用rake任务来完成它,虽然我可能会转而使用girl_friday actor,以便我可以更轻松地触发它。
最后我没有使用正确的carrierwave版本,但使用了carrierwave回调将调整大小的作业添加到后台处理器(在这种情况下是girl_friday)
class ImageUploader < CarrierWave::Uploader::Base
after :store, :resize_by_db
def resize_by_db(args)
widths = Resolutions.all.map &:width
widths.each do |width|
RESIZE_QUEUE << {:source => path, :width => width}
end
end
end
答案 0 :(得分:3)
您需要从实例方法调用类方法'version'。
process :selected_version
def selected_version
aspect_ratio = model.aspect_ratio
name = aspect_ratio.name
self.class.version name do
process :crop
process :resize_to_fit => [aspect_ratio.width, aspect_ratio.height]
end
end
答案 1 :(得分:2)
我不确定这是否有效,但我认为您可以动态地将版本添加到您的上传器模型中。
我在我的上传器上尝试了这个方法,并且只需调用该方法就可以在上传器上定义一个新版本。
def self.defind_version(version_title, width, height)
version version_title do
process :resize_to_limit => [width, height]
end
end
那么你可以将该方法调用到db表的create hook中,该表创建版本列表。
只是一个想法,我会在投入生产之前进行大量测试。