RMagick не может открыть изображение
Сегодня я пытаюсь написать код для создания анимированного GIF из папки, но я получаю эту ошибку:
.../.gem/ruby/2.0.0/gems/rmagick-2.13.2/lib/RMagick.rb:1635:in `read': unable to open image `0.jpg,3.jpg,1.jpg,2.jpg': No such file or directory @ error/blob.c/OpenBlob/2641 (Magick::ImageMagickError)
from .../.gem/ruby/2.0.0/gems/rmagick-2.13.2/lib/RMagick.rb:1635:in `block in initialize'
.../.gem/ruby/2.0.0/gems/rmagick-2.13.2/lib/RMagick.rb:1634:in `each'
.../.gem/ruby/2.0.0/gems/rmagick-2.13.2/lib/RMagick.rb:1634:in `initialize'
from .../bin/scripts/animate.rb:20:in `new'
from .../bin/scripts/animate.rb:20:in `<main>'
Это код:
#!/usr/bin/env ruby
require 'RMagick'
include Magick
files = Dir.glob"*.jpg"
if (!ARGV[0])
puts "Usage:"
puts "animate.rb 10"
puts "-0 delay ex. 10"
else
f = files.join(',').to_s
animation = ImageList.new("#{f}")
animation.delay = ARGV[0].to_i
animation.write("animated.gif")
exit
end
Большое спасибо;)
1 ответ
Решение
ImageList.new ожидает имена файлов в качестве аргументов, по одному за раз. Вы предоставляете только один аргумент, строку объединенных имен файлов. Так что вместо
f = files.join(',').to_s
animation = ImageList.new("#{f}")
использование
animation = ImageList.new *files
*files
указывает ruby расширить элементы массива на отдельные аргументы