1

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 を別のファイルに書き込んでテストしたところ、すべて動作しました。助けてください。

4

1 に答える 1

1

エラー メッセージは少し奇妙ですが、http://www.imagemagick.org/script/command-line-options.php?#compositeのドキュメントによると、 composite は 3 つの引数 (結合する 2 つの画像) しか取りません。行 1 で作成した画像と画像 1 と呼ばれる画像)、さらにグレースケールの「マスク」(この場合は画像 2)。

つまり、3曲ごとに保存しなければいけないようです。

于 2012-02-29T12:34:48.143 に答える