Sha256: 242329eaeddd14a9036ae94c81407fbf4b527e72b7415b1582b562381ee53dd7

Contents?: true

Size: 1.6 KB

Versions: 29

Compression:

Stored size: 1.6 KB

Contents

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

# Demonstrate the Image#stegano method.

# Create a small watermark from the Snake image by
# shrinking it and converting it to B&W.
begin
    watermark = Magick::Image.read('images/Snake.wmf').first
    watermark.scale!(64.0/watermark.rows)
    watermark = watermark.quantize(256, Magick::GRAYColorspace)
    wmrows = watermark.rows
    wmcols = watermark.columns

    # Read the image in which we'll hide the watermark.
    img = Magick::Image.read('images/Flower_Hat.jpg').first
    img.scale!(250.0/img.rows)

    # Embed the watermark starting at offset 91.
    puts 'Embedding watermark...'
    stegano = img.stegano(watermark, 91)
    puts 'Watermark embedded'

    # Write the watermarked image in MIFF format. Note that
    # the format must be lossless - Image#stegano doesn't work
    # with lossy formats like JPEG.
    stegano.write('img.miff')

    # Read the image and retrieve the watermark. The size
    # attribute describes the size and offset of the watermark.

    # This can take some time. Keep track of how far along we are.

    monitor = Proc.new do |text, quantum, span|
        printf("Extracting watermark...%3.0f%% complete\n", ((1.0-(quantum/span.to_f))*100.0))
        true
        end

    stegano = Magick::Image.read('stegano:img.miff') do
        self.size = Magick::Geometry.new(wmcols, wmrows, 91)
        self.monitor = monitor
    end

    stegano[0].monitor = nil

    # We don't need this any more.
    File.delete('img.miff')

    stegano[0].write('stegano.gif')

rescue Magick::ImageMagickError
    puts "#{$0}: ImageMagickError - #{$!}"
end

exit

Version data entries

29 entries across 29 versions & 2 rubygems

Version Path
rmagick-2.13.4 doc/ex/stegano.rb
rmagick-2.13.3 doc/ex/stegano.rb
rmagick-2.13.3.rc1 doc/ex/stegano.rb
rmagick-2.13.2 doc/ex/stegano.rb
rdp-rmagick-0.0.0 doc/ex/stegano.rb
rmagick-2.13.1 doc/ex/stegano.rb
rmagick-2.12.2 doc/ex/stegano.rb
rmagick-2.12.1 doc/ex/stegano.rb
rmagick-2.12.0 doc/ex/stegano.rb
rmagick-2.11.1 doc/ex/stegano.rb
rmagick-2.10.0 doc/ex/stegano.rb
rmagick-2.11.0 doc/ex/stegano.rb
rmagick-2.2.2 doc/ex/stegano.rb
rmagick-2.0.0 doc/ex/stegano.rb
rmagick-2.1.0 doc/ex/stegano.rb
rmagick-2.2.0 doc/ex/stegano.rb
rmagick-2.3.0 doc/ex/stegano.rb
rmagick-2.5.2 doc/ex/stegano.rb
rmagick-2.4.0 doc/ex/stegano.rb
rmagick-2.5.0 doc/ex/stegano.rb