#!/usr/bin/ruby -w require 'RMagick' # Extract the red, green, and blue channels # from a picture of a vase of roses. Display # the original image and the 3 channels as # a 2x2 grid. # We'll need a legend for each # channel so create a Draw object now legend = Magick::Draw.new legend.stroke = 'transparent' legend.gravity = Magick::SouthGravity legend.fill = 'white' # Read the image and change it to a manageable size. roses = Magick::Image.read('images/roses.jpg').first roses.resize!(200.0/roses.rows) channels = Magick::ImageList.new # Append each channel to the imagelist. channels << roses.channel(Magick::RedChannel) legend.annotate(channels, 0, 0, 10, 20, 'Red Channel') channels << roses.channel(Magick::GreenChannel) legend.annotate(channels, 0, 0, 10, 20, 'Green Channel') channels << roses.channel(Magick::BlueChannel) legend.annotate(channels, 0, 0, 10, 20, 'Blue Channel') # Finally, insert the original at the beginning of the list. channels.unshift(roses) legend.annotate(channels, 0, 0, 10, 20, 'Original') # ImageList#montage makes a 2x2 grid easy. combined = channels.montage { self.geometry = "#{roses.columns}x#{roses.rows}+5+5" self.tile = "2x2" self.background_color = 'white' } #combined.display combined.write('channel.jpg') exit