1#!/usr/bin/perl 2# 3# Overall demo of the major PerlMagick methods. 4# 5use Image::Magick; 6 7# 8# Read model & smile image. 9# 10print "Read...\n"; 11$null=Image::Magick->new; 12$null->Set(size=>'70x70'); 13$x=$null->ReadImage('NULL:black'); 14warn "$x" if "$x"; 15 16$model=Image::Magick->new(); 17$x=$model->ReadImage('model.gif'); 18warn "$x" if "$x"; 19$model->Label('Magick'); 20$model->Set(background=>'white'); 21 22$smile=Image::Magick->new; 23$x=$smile->ReadImage('smile.gif'); 24warn "$x" if "$x"; 25$smile->Label('Smile'); 26$smile->Set(background=>'white'); 27# 28# Create image stack. 29# 30print "Transform image...\n"; 31$images=Image::Magick->new(); 32 33print "Adaptive Blur...\n"; 34$example=$model->Clone(); 35$example->Label('Adaptive Blur'); 36$example->AdaptiveBlur('0x1'); 37push(@$images,$example); 38 39print "Adaptive Resize...\n"; 40$example=$model->Clone(); 41$example->Label('Adaptive Resize'); 42$example->AdaptiveResize('60%'); 43push(@$images,$example); 44 45print "Adaptive Sharpen...\n"; 46$example=$model->Clone(); 47$example->Label('Adaptive Sharpen'); 48$example->AdaptiveSharpen('0x1'); 49push(@$images,$example); 50 51print "Adaptive Threshold...\n"; 52$example=$model->Clone(); 53$example->Label('Adaptive Threshold'); 54$example->AdaptiveThreshold('5x5+5%'); 55push(@$images,$example); 56 57print "Add Noise...\n"; 58$example=$model->Clone(); 59$example->Label('Add Noise'); 60$example->AddNoise("Laplacian"); 61push(@$images,$example); 62 63print "Annotate...\n"; 64$example=$model->Clone(); 65$example->Label('Annotate'); 66$example->Annotate(text=>'Magick',geometry=>'+0+20',font=>'Generic.ttf', 67 fill=>'gold',gravity=>'North',pointsize=>14); 68push(@$images,$example); 69 70print "Auto-gamma...\n"; 71$example=$model->Clone(); 72$example->Label('Auto Gamma'); 73$example->AutoGamma(); 74push(@$images,$example); 75 76print "Auto-level...\n"; 77$example=$model->Clone(); 78$example->Label('Auto Level'); 79$example->AutoLevel(); 80push(@$images,$example); 81 82print "Blur...\n"; 83$example=$model->Clone(); 84$example->Label('Blur'); 85$example->Blur('0.0x1.0'); 86push(@$images,$example); 87 88print "Border...\n"; 89$example=$model->Clone(); 90$example->Label('Border'); 91$example->Border(geometry=>'6x6',color=>'gold'); 92push(@$images,$example); 93 94print "Channel...\n"; 95$example=$model->Clone(); 96$example->Label('Channel'); 97$example->Channel(channel=>'red'); 98push(@$images,$example); 99 100print "Charcoal...\n"; 101$example=$model->Clone(); 102$example->Label('Charcoal'); 103$example->Charcoal('2x1'); 104push(@$images,$example); 105 106print "ColorMatrix...\n"; 107$example=$model->Clone(); 108$example->Label('ColorMatrix'); 109$example->ColorMatrix([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0.5, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]); 110push(@$images,$example); 111 112print "Composite...\n"; 113$example=$model->Clone(); 114$example->Label('Composite'); 115$example->Composite(image=>$smile,compose=>'over',geometry=>'+35+65'); 116$example->Clamp(); 117push(@$images,$example); 118 119print "Contrast...\n"; 120$example=$model->Clone(); 121$example->Label('Contrast'); 122$example->Contrast(); 123push(@$images,$example); 124 125print "Contrast Stretch...\n"; 126$example=$model->Clone(); 127$example->Label('Contrast Stretch'); 128$example->ContrastStretch('5%'); 129push(@$images,$example); 130 131print "Convolve...\n"; 132$example=$model->Clone(); 133$example->Label('Convolve'); 134$example->Convolve([0.125, 0.125, 0.125, 0.125, 0.5, 0.125, 0.125, 0.125, 0.125]); 135push(@$images,$example); 136 137print "Crop...\n"; 138$example=$model->Clone(); 139$example->Label('Crop'); 140$example->Crop(geometry=>'80x80+25+50'); 141$example->Set(page=>'0x0+0+0'); 142push(@$images,$example); 143 144print "Despeckle...\n"; 145$example=$model->Clone(); 146$example->Label('Despeckle'); 147$example->Despeckle(); 148push(@$images,$example); 149 150print "Distort...\n"; 151$example=$model->Clone(); 152$example->Label('Distort'); 153$example->Distort(method=>'arc',points=>[60],'virtual-pixel'=>'white'); 154push(@$images,$example); 155 156print "Draw...\n"; 157$example=$model->Clone(); 158$example->Label('Draw'); 159$example->Draw(fill=>'none',stroke=>'gold',primitive=>'circle', 160 points=>'60,90 60,120',strokewidth=>2); 161push(@$images,$example); 162 163print "Detect Edges...\n"; 164$example=$model->Clone(); 165$example->Label('Detect Edges'); 166$example->Edge('2x0.5'); 167$example->Clamp(); 168push(@$images,$example); 169 170print "Emboss...\n"; 171$example=$model->Clone(); 172$example->Label('Emboss'); 173$example->Emboss('0x1'); 174push(@$images,$example); 175 176print "Encipher...\n"; 177$example=$model->Clone(); 178$example->Label('Encipher'); 179$example->Encipher('Magick'); 180push(@$images,$example); 181 182print "Equalize...\n"; 183$example=$model->Clone(); 184$example->Label('Equalize'); 185$example->Equalize(); 186push(@$images,$example); 187 188print "Explode...\n"; 189$example=$model->Clone(); 190$example->Label('Explode'); 191$example->Implode(-1); 192push(@$images,$example); 193 194print "Flip...\n"; 195$example=$model->Clone(); 196$example->Label('Flip'); 197$example->Flip(); 198push(@$images,$example); 199 200print "Flop...\n"; 201$example=$model->Clone(); 202$example->Label('Flop'); 203$example->Flop(); 204push(@$images,$example); 205 206print "Frame...\n"; 207$example=$model->Clone(); 208$example->Label('Frame'); 209$example->Frame('15x15+3+3'); 210push(@$images,$example); 211 212print "Fx...\n"; 213$example=$model->Clone(); 214$example->Label('Fx'); 215push(@$images,$example->Fx(expression=>'0.5*u')); 216 217print "Gamma...\n"; 218$example=$model->Clone(); 219$example->Label('Gamma'); 220$example->Gamma(1.6); 221push(@$images,$example); 222 223print "Gaussian Blur...\n"; 224$example=$model->Clone(); 225$example->Label('Gaussian Blur'); 226$example->GaussianBlur('0.0x1.5'); 227push(@$images,$example); 228 229print "Gradient...\n"; 230$gradient=Image::Magick->new; 231$gradient->Set(size=>'130x194'); 232$x=$gradient->ReadImage('gradient:#20a0ff-#ffff00'); 233warn "$x" if "$x"; 234$gradient->Label('Gradient'); 235push(@$images,$gradient); 236 237print "Grayscale...\n"; 238$example=$model->Clone(); 239$example->Label('Grayscale'); 240$example->Set(type=>'grayscale'); 241push(@$images,$example); 242 243print "Implode...\n"; 244$example=$model->Clone(); 245$example->Label('Implode'); 246$example->Implode(0.5); 247push(@$images,$example); 248 249print "Kuwahara...\n"; 250$example=$model->Clone(); 251$example->Label('Kuwahara'); 252$example->Kuwahara('0x1'); 253push(@$images,$example); 254 255print "Level...\n"; 256$example=$model->Clone(); 257$example->Label('Level'); 258$example->Level('20%x'); 259$example->Clamp(); 260push(@$images,$example); 261 262print "Linear stretch...\n"; 263$example=$model->Clone(); 264$example->Label('Linear Stretch'); 265$example->LinearStretch('5x5'); 266push(@$images,$example); 267 268print "Median Filter...\n"; 269$example=$model->Clone(); 270$example->Label('Median Filter'); 271$example->MedianFilter('4x4'); 272push(@$images,$example); 273 274print "Mode...\n"; 275$example=$model->Clone(); 276$example->Label('Mode'); 277$example->Mode('4x4'); 278push(@$images,$example); 279 280print "Modulate...\n"; 281$example=$model->Clone(); 282$example->Label('Modulate'); 283$example->Modulate(brightness=>110,saturation=>110,hue=>110); 284push(@$images,$example); 285$example=$model->Clone(); 286 287print "Monochrome...\n"; 288$example=$model->Clone(); 289$example->Label('Monochrome'); 290$example->Quantize(colorspace=>'gray',colors=>2,dither=>'false'); 291push(@$images,$example); 292 293print "Morphology...\n"; 294$example=$model->Clone(); 295$example->Label('Morphology'); 296$example->Morphology(method=>'Dilate',kernel=>'Diamond',iterations=>2); 297push(@$images,$example); 298 299print "Motion Blur...\n"; 300$example=$model->Clone(); 301$example->Label('Motion Blur'); 302$example->MotionBlur('0x13+10-10'); 303push(@$images,$example); 304 305print "Negate...\n"; 306$example=$model->Clone(); 307$example->Label('Negate'); 308$example->Negate(); 309push(@$images,$example); 310 311print "Normalize...\n"; 312$example=$model->Clone(); 313$example->Label('Normalize'); 314$example->Normalize(); 315push(@$images,$example); 316 317print "Oil Paint...\n"; 318$example=$model->Clone(); 319$example->Label('Oil Paint'); 320$example->OilPaint('2x0.5'); 321push(@$images,$example); 322 323print "Plasma...\n"; 324$plasma=Image::Magick->new; 325$plasma->Set(size=>'130x194'); 326$x=$plasma->ReadImage('plasma:fractal'); 327warn "$x" if "$x"; 328$plasma->Label('Plasma'); 329push(@$images,$plasma); 330 331print "Polaroid...\n"; 332$example=$model->Clone(); 333$example->Label('Polaroid'); 334$example->Polaroid(caption=>'Magick',angle=>-5.0,gravity=>'center'); 335push(@$images,$example); 336 337print "Posterize...\n"; 338$example=$model->Clone(); 339$example->Label('Posterize'); 340$example->Posterize(5); 341push(@$images,$example); 342 343print "Quantize...\n"; 344$example=$model->Clone(); 345$example->Label('Quantize'); 346$example->Quantize(); 347push(@$images,$example); 348 349print "Rotational Blur...\n"; 350$example=$model->Clone(); 351$example->Label('Rotational Blur'); 352$example->RotationalBlur(10); 353push(@$images,$example); 354 355print "Raise...\n"; 356$example=$model->Clone(); 357$example->Label('Raise'); 358$example->Raise('10x10'); 359push(@$images,$example); 360 361print "Reduce Noise...\n"; 362$example=$model->Clone(); 363$example->Label('Reduce Noise'); 364$example->ReduceNoise('2x2'); 365push(@$images,$example); 366 367print "Resize...\n"; 368$example=$model->Clone(); 369$example->Label('Resize'); 370$example->Resize('60%'); 371push(@$images,$example); 372 373print "Roll...\n"; 374$example=$model->Clone(); 375$example->Label('Roll'); 376$example->Roll(geometry=>'+20+10'); 377push(@$images,$example); 378 379print "Rotate...\n"; 380$example=$model->Clone(); 381$example->Label('Rotate'); 382$example->Rotate(45); 383push(@$images,$example); 384 385print "Sample...\n"; 386$example=$model->Clone(); 387$example->Label('Sample'); 388$example->Sample('60%'); 389push(@$images,$example); 390 391print "Scale...\n"; 392$example=$model->Clone(); 393$example->Label('Scale'); 394$example->Scale('60%'); 395push(@$images,$example); 396 397print "Segment...\n"; 398$example=$model->Clone(); 399$example->Label('Segment'); 400$example->Segment(); 401push(@$images,$example); 402 403print "Shade...\n"; 404$example=$model->Clone(); 405$example->Label('Shade'); 406$example->Shade(geometry=>'30x30',gray=>'true'); 407push(@$images,$example); 408 409print "Sharpen...\n"; 410$example=$model->Clone(); 411$example->Label('Sharpen'); 412$example->Sharpen('0.0x1.0'); 413$example->Clamp(); 414push(@$images,$example); 415 416print "Shave...\n"; 417$example=$model->Clone(); 418$example->Label('Shave'); 419$example->Shave('10x10'); 420push(@$images,$example); 421 422print "Shear...\n"; 423$example=$model->Clone(); 424$example->Label('Shear'); 425$example->Shear('-20x20'); 426push(@$images,$example); 427 428print "Sketch...\n"; 429$example=$model->Clone(); 430$example->Label('Sketch'); 431$example->Set(colorspace=>'Gray'); 432$example->Sketch('0x20+120'); 433push(@$images,$example); 434 435print "Sigmoidal Contrast...\n"; 436$example=$model->Clone(); 437$example->Label('Sigmoidal Contrast'); 438$example->SigmoidalContrast("3x50%"); 439push(@$images,$example); 440 441print "Spread...\n"; 442$example=$model->Clone(); 443$example->Label('Spread'); 444$example->Spread(); 445push(@$images,$example); 446 447print "Solarize...\n"; 448$example=$model->Clone(); 449$example->Label('Solarize'); 450$example->Solarize(); 451push(@$images,$example); 452 453print "Swirl...\n"; 454$example=$model->Clone(); 455$example->Label('Swirl'); 456$example->Swirl(90); 457push(@$images,$example); 458 459print "Tint...\n"; 460$example=$model->Clone(); 461$example->Label('Tint'); 462$example->Tint('wheat'); 463push(@$images,$example); 464 465print "Unsharp Mask...\n"; 466$example=$model->Clone(); 467$example->Label('Unsharp Mask'); 468$example->UnsharpMask('0.0x1.0'); 469$example->Clamp(); 470push(@$images,$example); 471 472print "Vignette...\n"; 473$example=$model->Clone(); 474$example->Label('Vignette'); 475$example->Vignette('0x20'); 476push(@$images,$example); 477 478print "Wave...\n"; 479$example=$model->Clone(); 480$example->Label('Wave'); 481$example->Wave('25x150'); 482push(@$images,$example); 483 484print "WaveletDenoise...\n"; 485$example=$model->Clone(); 486$example->Label('WaveletDenoise'); 487$example->WaveletDenoise('5%'); 488push(@$images,$example); 489 490# 491# Create image montage. 492# 493print "Montage...\n"; 494$montage=$images->Montage(geometry=>'128x160+8+4>',gravity=>'Center', 495 tile=>'5x+10+200',compose=>'over',background=>'#ffffff',font=>'Generic.ttf', 496 pointsize=>18,fill=>'#600',stroke=>'none',shadow=>'true'); 497 498$logo=Image::Magick->new(); 499$logo->Read('logo:'); 500$logo->Zoom('40%'); 501$montage->Composite(image=>$logo,gravity=>'North'); 502 503print "Write...\n"; 504$montage->Set(matte=>'false'); 505$montage->Write('demo.jpg'); 506print "Display...\n"; 507$montage->Write('win:'); 508