im_magick icon indicating copy to clipboard operation
im_magick copied to clipboard

RMagick replacement which uses ImageMagick directly by constructing chainable commands

ImMagick

RMagick replacement which uses ImageMagick directly by constructing chainable commands with value placeholders. It basically delegates to the command-line tools, so constructing commands is similar to how you would work with those. The code itself is nothing fancy, it just gets the job done by providing a simple DSL-like construct.

Here are a couple of examples:

cmd = ImMagick::convert.from(:source).resize(:w, :h).grayscale.to('thumbs/thumb-%03d.jpg') cmd.run(:source => 'images/logo.png', :w => 100, :h => 100).save(7) # => thumbs/thumb-007.jpg


img = ImMagick::Image.file('images/logo.png') img.crop_resized(200, 200, :south)

puts img.inspect => "images/logo.png -resize 200x207 -gravity south -crop 200x200+0+0 +repage"


img = ImMagick::Image.file('images/logo.png') img.crop_resized(:w, :h, :g) # width, height, gravity placeholders

puts img.inspect(:w => 200, :h => 300, :g => :south) => "images/logo.png -resize 291x300 -gravity south -crop 200x300+0+0 +repage"

img.save('output/crop-resized-img.jpg', :w => 200, :h => 300, :g => :south)


cmd = ImMagick::convert do |c| c.background(:black) c.fill(:white) c.font('./unionbd.ttf') c.pointsize(40) c.size('300x') c.gravity('west') c.caption(:placeholder) end

puts cmd.inspect(:placeholder => 'FooBar') => "-background black -fill white -font ./unionbd.ttf -pointsize 40 -size 300x -gravity west caption:'FooBar'"

cmd.run(:placeholder => 'FooBar').save('output/foo-bar.png')