使用Paperdragon的Trailblazer操作如何顺序处理图像?

时间:2016-02-23 16:39:04

标签: trailblazer

在使用Paperdragon处理图像的Trailblazer操作中,这样的代码是典型的:

def process(params)
  validate(params) do |f| 
    f.image!(f.upload) do |v| 
      v.process!(:original)
      v.process!(:version_a) { |job| job.something... }
      v.process!(:version_b) { |job| job.something... }
      v.process!(:version_c) { |job| job.something... }
      end 
    end 
  end 
end 

可以从上传的图片创建四个版本,可以在操作合同上以upload访问。

我想对:original执行一些操作,生成:edited,然后使用:edited作为:verson_a:version_b和{{的基线1}}。我怎么能用Paperdragon实现这个目标?

1 个答案:

答案 0 :(得分:0)

您可以使用第一个创建的版本作为输入运行第二个处理块:

def process(params)
  validate(params) do |f| 
    f.image!(f.upload) do |v| 
      v.process!(:original)
      v.process!(:edited) { |job| job.thumb!(crop) }
      end 
    end 
    f.image!(f.file(:edited)) do |v| 
      v.process!(:version_a) { |job| job.something... }
      v.process!(:version_b) { |job| job.something... }
      v.process!(:version_c) { |job| job.something... }
    end                                                                           
    f.save
  end 
end

其中file是合同上的方法:

def file(version)
  File.new(Dragonfly.app.datastore.server_root+image[version.to_sym].url)
end