我正在开发一款允许用户为文档创建自定义水印的应用。我想用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
答案 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