如何在carrierwave中创建文件

时间:2012-01-11 00:02:47

标签: ruby-on-rails carrierwave

我正在开发一款允许用户为文档创建自定义水印的应用。我想用carrierwave存储水印图像。

到目前为止,正在创建图像,但是没有使用carrierwave创建/保存model.image属性。救命?

class Watermark < ActiveRecord::Base

mount_uploader :image, MarkImageUploader
before_save :textToImage
def textToImage
  img = MiniMagick::Image.open("#{Rails.root}/public/images/blank.png")
  img.combine_options do |c|
   c.gravity 'Center'
   c.draw "rotate 315 text 50,-375 '#{self.text}'"
   c.font '-*-helvetica-*-r-*-*-125-*-*-*-*-*-*-2'
   c.fill("#dddddd")
 end
 self.image = img
end
end 

1 个答案:

答案 0 :(得分:2)

事实证明,您可以将文件分配给控制器中的carrierwave列:

  @watermark.image =  File.open("#{Rails.root}/public/images/blank.png")

然后在上传程序中处理文本的添加:

process :addText 
  def addText 
    t = model.text
    manipulate! do |img|
      img.combine_options do |cmd|
      cmd.gravity 'Center'
      cmd.fill("lightgray")
      cmd.draw "rotate 325 text 85,-30 '#{t.upcase}'"
      cmd.font "#{Rails.root}/public/images/fonts/Vera.ttf"  
      cmd.pointsize '60' 
    end
    result = img  
  end
end