带载波的动态图像版本

Phr*_*_00 5 ruby ruby-on-rails carrierwave

我有一个数据库中的大小列表,我需要调整图像大小,我使用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
Run Code Online (Sandbox Code Playgroud)

Pol*_*her 2

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

我在上传器上尝试了此方法,并且只需调用该方法即可在上传器上定义新版本。

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

因此,您可以将该方法调用放入数据库表的创建挂钩中,以生成版本列表。

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