#!/usr/bin/perl use strict; use Image::Magick; my @FILENAMES = (); my $RESOLUTION=200; my @OPS = ( "Undefined", "Add", "Atop", "Blend", "Bumpmap", "Clear", "ColorBurn", "ColorDodge", "Colorize", "CopyBlack", "CopyBlue", "CopyCyan", "CopyGreen", "Copy", "CopyMagenta", "CopyOpacity", "CopyRed", "CopyYellow", "Darken", "Dst", "Difference", "Displace", "Dissolve", "DstAtop", "DstIn", "DstOut", "DstOver", "Dst", "Exclusion", "HardLight", "Hue", "In", "Lighten", "Luminize", "Minus", "Modulate", "Multiply", "None", "Out", "Overlay", "Over", "Plus", "ReplaceCompositeOp", "Saturate", "Screen", "SoftLight", "Src", "SrcAtop", "SrcIn", "SrcOut", "SrcOver", "Src", "Subtract", "Threshold", "Xor" ); my $im1 = newImage($RESOLUTION, $RESOLUTION); drawRectangle($im1, "#0000ffC0" , 0,$RESOLUTION/2, $RESOLUTION, $RESOLUTION ); drawCircleBorder($im1, "#00ff0080" , $RESOLUTION/2+30, $RESOLUTION/2, 50, 30); outputImage($im1, "greenonblue.png"); my $whitecircle = newImage($RESOLUTION, $RESOLUTION); drawRectangle($whitecircle,"#00000000" , $RESOLUTION/2,$RESOLUTION/4 , $RESOLUTION, $RESOLUTION ); drawCircleBorder($whitecircle, "#000000c0" , $RESOLUTION/2+30, $RESOLUTION/2-30, 50, 7); drawCircleBorder($whitecircle, "#ffffff00" , $RESOLUTION/2-30, $RESOLUTION/2-30, 50, 10); $whitecircle->Blur(radius=>10, sigma=>100); drawCircleBorder($whitecircle, "#ffffff00" , $RESOLUTION/2-30, $RESOLUTION/2+30, 50, 7); outputImage($whitecircle, "whiteonblack.png"); my $err; my $op; foreach $op (@OPS) { print $op . " "; CompoMask($im1, $whitecircle, $op ); } writeHTML("compotest.html"); sub CompoMask { my ($im1, $im2, $compname)=@_; my $i1 = $im1->Clone(); my $i2 = $im2->Clone(); $i1->Composite(image=>$i2, compose=>$compname); outputImage($i1, "m0_" . $compname . ".png"); $i1 = $im1->Clone(); $i2 = $im2->Clone(); $i1->Composite(image=>$i2, compose=>$compname, , mask=>$i1); outputImage($i1, "m1_" . $compname . ".png"); $i1 = $im1->Clone(); $i2 = $im2->Clone(); $i1->Composite(image=>$i2, compose=>$compname, , mask=>$i2); outputImage($i1, "m2_" . $compname . ".png"); } sub drawCircleBorder { my ($im, $color, $centerx, $centery, $size, $border )=@_; my $err; my $l = '' . ($centerx ) . "," . ($centery ); $l .= ' ' . $size . "," . $size ; $l .= " 0,360" ; # print "line=$l\n"; my $err = $_[0]->Draw( primitive=>'ellipse' , method=>'point', stroke=>$color , fill=>'transparent' , points=>$l , strokewidth=>$border ); warn $err if $err; } sub writeHTML { my ($filename)=@_; open HTMLFILE, ">$filename" or die "Cannot open $filename for write :$!"; print HTMLFILE "
\n"; my $f; foreach $f (@FILENAMES) { print HTMLFILE "