使用rmagick和简单测试的rails

时间:2013-12-07 11:19:06

标签: ruby-on-rails ruby

我想在rails 4上玩rmagick,但得到:

undefined method `annotate' for #<Array:0xbe4434>

控制器:

class ImgController < ApplicationController
include Magick
def index
  img = Magick::Image.read('public/images/bg.png')
  txt = Draw.new

  img.annotate(txt,  0,0,90,15,  "hello word"){
  txt.gravity = Magick::SouthWestGravity
  txt.pointsize = 30
  txt.fill = '#084B8A'
  txt.font_weight = Magick::BoldWeight
}
img.write('bg_1.png')
send_data bg_1.to_blob, disposition: 'inline',
type: 'image/png'
end
end

的Gemfile

gem 'rmagick',  require: 'RMagick'
来自irb rmagick的

工作得很好:

1. require 'RMagick'
2. include Magick
3.
4. cat = ImageList.new("Cheetah.jpg")
5. cat.display
6. exit

1 个答案:

答案 0 :(得分:1)

Magick::Image#read返回一个图像数组,因为此方法可用于读取GIF动画。只需在结果上调用.first

img = Magick::Image.read('public/images/bg.png').first

另一个问题是你应该在Draw的实例上调用注释,并将img作为第一个参数传递:

Magick::Draw.new.annotate(img, 0, 0, 90, 15, 'hello world') do
  # set options here
  self.gravity = Magick::SouthEastGravity
  # …
end