#!/usr/bin/ruby -w require 'RMagick' CompositeOps = {Magick::OverCompositeOp => 'OverCompositeOp', Magick::OutCompositeOp => 'OutCompositeOp', Magick::PlusCompositeOp => 'PlusCompositeOp', Magick::DifferenceCompositeOp => 'DifferenceCompositeOp', Magick::CopyRedCompositeOp => 'CopyRedCompositeOp', Magick::DisplaceCompositeOp => 'DisplaceCompositeOp'} bg = Magick::Image.read('images/Hot_Air_Balloons_H.jpg').first bg.resize!(0.50) fg = Magick::Image.new(bg.columns, bg.rows) text = Magick::Draw.new text.pointsize = 48 text.fill = 'blue' text.stroke = 'transparent' text.text_antialias = false text.font_weight = Magick::BoldWeight text.gravity = Magick::CenterGravity text.annotate(fg, 0,0,0,0, 'RMagick') fg = fg.matte_replace(0,0) examples = Magick::ImageList.new CompositeOps.each { |composite_op, op_name| composite = bg.composite(fg.copy, Magick::CenterGravity, composite_op) composite['Label'] = op_name examples << composite } montage = examples.montage { self.tile = '2x3' self.geometry = "#{examples.columns}x#{examples.rows}+10+5" self.background_color = 'black' self.fill = 'white' self.stroke = 'transparent' } #montage.display # Write a full-size version. montage.write('composite_big.jpg') # Write a half-size version for the web page. montage.minify.write('composite.jpg') exit exit