5

我在数据库中有一个尺寸列表,我需要将图像调整为,然后使用carrierwave 上传它们。

有没有办法使用carrierwave来处理调整大小?现在我正在使用 rake 任务来完成它,尽管我可能会切换到使用 girl_friday 演员,以便我可以更轻松地触发它。

编辑

最后我没有使用正确的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
4

2 回答 2

3

您需要从实例方法调用类方法“版本”。

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
于 2015-12-01T23:02:02.933 回答
2

我不确定这是否可行,但我认为您可以将版本动态添加到上传器模型中。

我在我的上传器上尝试了这个方法,并且能够通过调用该方法在上传器上定义一个新版本。

def self.defind_version(version_title, width, height)
  version version_title do
    process :resize_to_limit => [width, height]
  end
end

因此,您可以将该方法调用用于创建版本列表的 db 表的创建钩子中。

只是一个想法,我会在投入生产之前进行大量测试。

于 2013-02-14T23:54:31.733 回答