#! /usr/local/bin/ruby -w
require 'RMagick'

# Demonstrate the Image#add_noise method

# Read and scale the Violin.jpg image
violin = Magick::Image.read('images/Violin.jpg').first
violin = violin.scale(200.0/violin.columns)

# Call add_noise. This returns a copy of the image with noise added.
noisy_violin = violin.add_noise(Magick::MultiplicativeGaussianNoise)

# Crop the new image, leaving just the right half.
noisy_violin = noisy_violin.crop(noisy_violin.columns/2, 0, noisy_violin.columns/2, noisy_violin.rows)

# Composite the new Image over the original image.
result = violin.composite(noisy_violin, Magick::EastGravity, Magick::OverCompositeOp)

# Draw a white line down the middle to emphasize the
# border between the original image and the noisy image.
line = Magick::Draw.new
line.stroke('white')
line.stroke_width(1)
line.line(violin.columns/2, 0, violin.columns/2, violin.rows)
line.draw(result)

#result.display
result.write("add_noise.jpg")
exit
