Ruby Carrierwave:用于动态调整大小的伪版本

Ruby Carrierwave:用于动态调整大小的伪版本,ruby,carrierwave,Ruby,Carrierwave,为了能够拥有动态图像大小(是的,我知道),我提出了以下版本,它只会在每次请求时创建一个临时文件(jap,我知道--[基于args将文件存储在缓存中?]) 我遇到的问题是,由于我不处理这个版本,它准复制了原始版本,并将其用于“按请求”操作。如果原始文件是一个100MB的tiff,这会变得一团糟! 因此,现在我正在寻找一种方法来防止该版本实际创建文件,并使用不同版本的文件进行“按请求”操作。 有什么想法吗?你找到解决办法了吗? version :resized do def url(*args

为了能够拥有动态图像大小(是的,我知道),我提出了以下
版本
,它只会在每次请求时创建一个临时文件(jap,我知道--[基于args将文件存储在缓存中?])

我遇到的问题是,由于我不处理这个版本,它准复制了原始版本,并将其用于“按请求”操作。如果原始文件是一个100MB的tiff,这会变得一团糟! 因此,现在我正在寻找一种方法来防止该版本实际创建文件,并使用不同版本的文件进行“按请求”操作。
有什么想法吗?

你找到解决办法了吗?
version :resized do 
  def url(*args) 
    width,height,gravity,region = args[0],args[1],args[2],args[3]
    manipulate! do |img|
      cols, rows = img[:dimensions]
      img.combine_options do |cmd|
        if width != cols || height != rows
          scale = [width/cols.to_f, height/rows.to_f].max
          cols = (scale * (cols + 0.5)).round
          rows = (scale * (rows + 0.5)).round
          cmd.resize "#{cols}x#{rows}"
        end
        cmd.gravity gravity
        cmd.extent "#{width}x#{height}#{region}" if cols != width || rows != height
      end
      img = yield(img) if block_given?
      img
    end 
    convert "jpg"
    super() 
  end 
end