【问题标题】:MiniMagick Image.create method giving an ArgumentErrorMiniMagick Image.create 方法给出一个 ArgumentError
【发布时间】:2012-03-18 16:44:00
【问题描述】:

我正在使用 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 写入单独的文件进行测试,它们都可以工作。请帮忙。

【问题讨论】:

标签: ruby-on-rails ruby image-processing imagemagick minimagick


【解决方案1】:

错误消息有点奇怪,但根据http://www.imagemagick.org/script/command-line-options.php?#compositecomposite 的文档,只需要 3 个参数 - 您要组合的两个图像(您在第 1 行创建的图像和称为图像 1 的图像),加上灰度“掩码”(本例中为 image2)。

换句话说,您似乎必须在三首曲子中的每一首曲子之后保存。

【讨论】:

  • 错误不是在合成中出现,而是在 Image.create 中出现。我没有使用 Image.create,而是打开了一个背景图像,程序运行良好。
  • @VinaySShenoy 你也可以做类似 collage = MiniMagick::Image.create(".jpg", validate = false) {} arguments = %W(-size #{width}x#{height } xc:white #{collage.path}) cmd = MiniMagick::CommandBuilder.new("convert", *arguments) collage.run(cmd)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
相关资源
最近更新 更多