【问题标题】:How do I append dynamic text to image using rmagick?如何使用 rmagick 将动态文本附加到图像?
【发布时间】:2012-10-01 21:51:17
【问题描述】:

我正在构建一个 Rails 应用程序,用户可以在其中输入关于自己的六个字并上传图片。我想将这六个单词附加到图像中。

我知道如何使用“静态”文本使文本追加工作,但我不知道如何将文本字段链接到用户在输入六个单词时填写的表单。

现在,“文本”是静态的,无论我放什么。

我想知道为什么以下不起作用?

process :textify => <%= @user.sixwords %> 

这是我所拥有的:

process :textify => 'Text'

  def textify(phrase)
    manipulate! do |img|
    img = img.sepiatone

  title = Magick::Draw.new

  title.annotate(img, 0,0,0,40, phrase) {
    self.font_family = 'Helvetica'
    self.fill = 'white'
    self.pointsize = 32  
  }

  img = img.write('newimg.gif')
 end
end

感谢您帮助我变得不那么n00b! :)

【问题讨论】:

    标签: ruby-on-rails image imagemagick rmagick


    【解决方案1】:

    在朋友的帮助下想通了。

    这就是我需要改变的全部:

    title.annotate(img, 0,0,0,40, model.name) {
        self.font_family = 'Helvetica'
        self.fill = 'white'
        self.pointsize = 32  
      }
    

    之所以有效,是因为 Carrierwave 使用 model 作为指向上传器附加到的任何实例对象的变量。在我的模型中,name 是接受用户文本输入的表单字段的名称。

    对于其他用例,您只需使用 model.field_name 将您给 field_name 的任何名称放在其中。

    我的朋友这样写是为了向我解释。我将它粘贴在这里以防它可以帮助其他人。

    ImageUploader 中的 'process' 方法是一个静态类方法 仅在文件加载到内存时调用一次,并且 由红宝石解释。它基本上只是在内部跟踪 以后应该为每个实例调用哪些处理方法 图片上传器。 textify 方法是获取的实例方法 在创建的每个 ImageUploader 对象实例上调用。这 您在运动员模型中调用的“mount_uploader”类方法是 做一些红宝石魔法来实例化 ImageUploader 实例和 将你的运动员实例对象传递给它,使其可用于 ImageUploader 对象实例作为实例方法称为“模型”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多