use strict;
use warnings;
use Image::Magick;

# Sammler fuer alle Bilder
my $images = Image::Magick->new();
my ($lego, $x, $example, $plasma, $gradient);

# Hintergrundmoeglichkeiten
# Plasma liefert Zufallsbild
$plasma = Image::Magick->new;
$plasma->Set(size=>'300x300');
$x = $plasma->ReadImage('plasma:fractal');
$plasma->Label('Plasma');
push(@$images,$plasma);

# gleich noch einmal
$plasma = Image::Magick->new;
$plasma->Set(size=>'300x300');
$x = $plasma->ReadImage('plasma:fractal');
$plasma->Label('Plasma');
push(@$images,$plasma);

# Verlauf
$gradient = Image::Magick->new;
$gradient->Set(size=>'300x300');
$x = $gradient->ReadImage('gradient:#0000ff-#ff0000');
$gradient->Label('Gradient');
push(@$images,$gradient);

# Musterbild einlesen
$lego = Image::Magick->new();
$x = $lego->ReadImage('lego3.jpg');
$lego->Label('Original');
$lego->Set(background=>'white');
push(@$images,$lego);

# Nun alle moeglichen Effekte anwenden
$example = $lego->Clone();
$example->Label('Flip');
$example->Flip();
push(@$images,$example);

$example = $lego->Clone();
$example->Label('Flop');
$example->Flop();
push(@$images,$example);

$example = $lego->Clone();
$example->Label('Roll');
$example->Roll(geometry=>'+100+100');
push(@$images,$example);

$example = $lego->Clone();
$example->Label('Rotate');
$example->Rotate(45);
push(@$images,$example);

$example = $lego->Clone();
$example->Label('Shear');
$example->Shear('-20x20');
push(@$images,$example);

$example = $lego->Clone();
$example->Label('Swirl');
$example->Swirl(120);
push(@$images,$example);

$example = $lego->Clone();
$example->Label('Wave');
$example->Wave('25x150');
push(@$images,$example);

$example = $lego->Clone();
$example->Label('Motion Blur');
$example->MotionBlur('0x10+10-10');
push(@$images,$example);

# Alle Bilder zusammenmontieren
my $montage = $images->Montage(geometry=>'300x300+8+4>',
                               gravity=>'Center',
                               tile=>'3',
                               compose=>'over',
                               background=>'#ffffff',
                               font=>'Generic.ttf',
                               pointsize=>18,
                               fill=>'#600',
                               stroke=>'none',
	                             shadow=>'true');
$montage->Set(matte=>'false');

# ... und abspeichern
$montage->Write('demo.jpg');
$montage->Write('win:');
