#!/usr/bin/ruby -w # Demonstrate the map, append, and composite methods by # mapping the colors in three separate images into the # 216 "Web-safe" colors. require 'RMagick' group = Magick::ImageList.new # Read three images. snapshots = Magick::ImageList.new("images/Hot_Air_Balloons.jpg","images/Violin.jpg","images/Polynesia.jpg") # Scale each image to 250 pixels high & proportionately wide snapshots.each { |shot| group << shot.scale(250.0/shot.rows) } # "Read" the Netscape 216-color cube map = Magick::ImageList.new "netscape:" # Map the group of snapshots into the Netscape colors puts "Mapping... This may take a few seconds..." mapped = group.map map, false # Use the append method to arrange the unmapped images # side-by-side into a single image. Repeat for the mapped images. old = group.append false new = mapped.append false # Show before & after on the same image. # Crop the top half of the "after mapping" images away. half_height = old.rows / 2 new.crop! 0, half_height, new.columns, half_height # Composite the "after" images over the "before" images. demo = old.composite new, 0, half_height, Magick::OverCompositeOp # Draw a black line across the middle to help # distinquish "before" (top) and "after" (bottom) line = Magick::Draw.new line.line 0, demo.rows/2, demo.columns, demo.rows/2 line.stroke "black" line.draw demo #demo.display puts "Writing map.jpg..." demo.write "map.jpg" exit