我正在使用Ruby 1.9.3创建缩略图拼贴。缩略图按如下方式加载:
image1 = MiniMagick::Image.open("1.jpg")
image2 = MiniMagick::Image.open("2.jpg")
image2.rotate "-45>"
image3 = MiniMagick::Image.open("3.jpg")
image3.rotate "45>"
我之前从未使用过ImageMagick或MiniMagick,我从minimagick GitHub页面获得了合成图像的代码。
collage = MiniMagick::Image.create "jpg", false do |c|
c.size "1024x768"
c.canvas "white"
end
collage = collage.composite image1 do |c|
c.gravity "center"
end
collage = collage.composite image2 do |c|
c.gravity "east"
end
collage = collage.composite image3 do |c|
c.gravity "west"
end
collage.write("output.jpg")
问题出现在Image.create命令上。当我使用
运行文件时$ ruby prog.rb
我收到以下错误
/Users/vinayshenoy/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/tempfile.rb:250:in `size': wrong number of arguments (1 for 0) (ArgumentError)
from prog.rb:14:in `block in <main>'
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/mini_magick-3.4/lib/mini_magick.rb:158:in `call'
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/mini_magick-3.4/lib/mini_magick.rb:158:in `create'
from prog.rb:13:in `<main>'
脚本文件与图像是同一目录。我通过将image1,image2和image3写入单独的文件进行测试,它们都可以工作。请帮忙。
答案 0 :(得分:1)
错误消息有点奇怪,但根据http://www.imagemagick.org/script/command-line-options.php?#composite复合文档中的文档只需要3个参数 - 要组合的两个图像(您在第1行创建的图像和名为图像1的图像) ,再加上灰度等级的面具&#39; (在这种情况下为image2)。
换句话说,看起来你必须在三种成分中的每一种之后保存。