-
Notifications
You must be signed in to change notification settings - Fork 349
Open
Description
I have a library RandomLineDrawing used with testing that generates random images and saves them to disk. This is the code:
require 'mini_magick'
require 'fileutils'
class RandomLineDrawing
def self.generate(filename, width: 500, height: 500, lines: 20, line_width: 2)
# Ensure the directory exists
FileUtils.mkdir_p(File.dirname(filename)) unless Dir.exist?(File.dirname(filename))
# Build the command arguments
args = []
args << "-size" << "#{width}x#{height}"
args << "xc:white"
args << "-stroke" << "black"
args << "-strokewidth" << line_width.to_s
# Add drawing commands
lines.times do
x1, y1 = rand(width), rand(height)
x2, y2 = rand(width), rand(height)
args << "-draw" << "line #{x1},#{y1} #{x2},#{y2}"
end
# Save to file
args << filename
# Use the recommended approach for ImageMagick 7
MiniMagick::Tool::Magick.new do |magick|
args.each { |arg| magick << arg }
end
# Return the filename
filename
end
endThis is then called with:
RandomLineDrawing.generate('filename.png')It has stopped working. The offending lines are:
MiniMagick::Tool::Magick.new do |magick|
args.each { |arg| magick << arg }
endThis is the error produced:
lib/random_line_drawing.rb:32:in 'RandomLineDrawing.generate': wrong number of arguments (given 0, expected 1) (ArgumentError)
from (web):1:in '<main>'All the examples I have found online do not work. It appears that something has changed, possibly with ImageMagick's API. I have got round my issue by using Ruby's system method and using a shell command but this isn't ideal. Any help appreciated :-)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels