blob: adc33f4fc1eab6806c7183744e9f1a7f35978420 [file] [log] [blame]
cristy3ed852e2009-09-05 21:47:34 +00001#!/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('0x1');
104push(@$images,$example);
105
106print "Composite...\n";
107$example=$model->Clone();
108$example->Label('Composite');
109$example->Composite(image=>$smile,compose=>'over',geometry=>'+35+65');
110push(@$images,$example);
111
112print "Contrast...\n";
113$example=$model->Clone();
114$example->Label('Contrast');
115$example->Contrast();
116push(@$images,$example);
117
118print "Contrast Stretch...\n";
119$example=$model->Clone();
120$example->Label('Contrast Stretch');
121$example->ContrastStretch('5%');
122push(@$images,$example);
123
124print "Convolve...\n";
125$example=$model->Clone();
126$example->Label('Convolve');
127$example->Convolve([1, 1, 1, 1, 4, 1, 1, 1, 1]);
128push(@$images,$example);
129
130print "Crop...\n";
131$example=$model->Clone();
132$example->Label('Crop');
133$example->Crop(geometry=>'80x80+25+50');
134$example->Set(page=>'0x0+0+0');
135push(@$images,$example);
136
137print "Despeckle...\n";
138$example=$model->Clone();
139$example->Label('Despeckle');
140$example->Despeckle();
141push(@$images,$example);
142
143print "Distort...\n";
144$example=$model->Clone();
145$example->Label('Distort');
146$example->Distort(method=>'arc',points=>[60],'virtual-pixel'=>'white');
147push(@$images,$example);
148
149print "Draw...\n";
150$example=$model->Clone();
151$example->Label('Draw');
152$example->Draw(fill=>'none',stroke=>'gold',primitive=>'circle',
153 points=>'60,90 60,120',strokewidth=>2);
154push(@$images,$example);
155
156print "Detect Edges...\n";
157$example=$model->Clone();
158$example->Label('Detect Edges');
159$example->Edge();
160push(@$images,$example);
161
162print "Emboss...\n";
163$example=$model->Clone();
164$example->Label('Emboss');
165$example->Emboss('0x1');
166push(@$images,$example);
167
168print "Equalize...\n";
169$example=$model->Clone();
170$example->Label('Equalize');
171$example->Equalize();
172push(@$images,$example);
173
174print "Implode...\n";
175$example=$model->Clone();
176$example->Label('Explode');
177$example->Implode(-1);
178push(@$images,$example);
179
180print "Flip...\n";
181$example=$model->Clone();
182$example->Label('Flip');
183$example->Flip();
184push(@$images,$example);
185
186print "Flop...\n";
187$example=$model->Clone();
188$example->Label('Flop');
189$example->Flop();
190push(@$images,$example);
191
192print "Frame...\n";
193$example=$model->Clone();
194$example->Label('Frame');
195$example->Frame('15x15+3+3');
196push(@$images,$example);
197
198print "Fx...\n";
199$example=$model->Clone();
200$example->Label('Fx');
201push(@$images,$example->Fx(expression=>'0.5*u'));
202
203print "Gamma...\n";
204$example=$model->Clone();
205$example->Label('Gamma');
206$example->Gamma(1.6);
207push(@$images,$example);
208
209print "Gaussian Blur...\n";
210$example=$model->Clone();
211$example->Label('Gaussian Blur');
212$example->GaussianBlur('0.0x1.5');
213push(@$images,$example);
214
215print "Gradient...\n";
216$gradient=Image::Magick->new;
217$gradient->Set(size=>'130x194');
218$x=$gradient->ReadImage('gradient:#20a0ff-#ffff00');
219warn "$x" if "$x";
220$gradient->Label('Gradient');
221push(@$images,$gradient);
222
223print "Grayscale...\n";
224$example=$model->Clone();
225$example->Label('Grayscale');
226$example->Quantize(colorspace=>'gray');
227push(@$images,$example);
228
229print "Implode...\n";
230$example=$model->Clone();
231$example->Label('Implode');
232$example->Implode(0.5);
233push(@$images,$example);
234
235print "Level...\n";
236$example=$model->Clone();
237$example->Label('Level');
238$example->Level('20%');
239push(@$images,$example);
240
241print "Median Filter...\n";
242$example=$model->Clone();
243$example->Label('Median Filter');
244$example->MedianFilter();
245push(@$images,$example);
246
247print "Modulate...\n";
248$example=$model->Clone();
249$example->Label('Modulate');
250$example->Modulate(brightness=>110,saturation=>110,hue=>110);
251push(@$images,$example);
252$example=$model->Clone();
253
254print "Monochrome...\n";
cristy7527f102010-01-24 16:35:18 +0000255$example=$model->Clone();
cristy3ed852e2009-09-05 21:47:34 +0000256$example->Label('Monochrome');
257$example->Quantize(colorspace=>'gray',colors=>2,dither=>'false');
258push(@$images,$example);
259
cristy7527f102010-01-24 16:35:18 +0000260print "Morphology...\n";
261$example=$model->Clone();
262$example->Label('Morphology');
263$example->Morphology(method=>'Dilate',kernel=>'Diamond',iterations=>3);
264push(@$images,$example);
265
cristy3ed852e2009-09-05 21:47:34 +0000266print "Motion Blur...\n";
267$example=$model->Clone();
268$example->Label('Motion Blur');
269$example->MotionBlur('0x13+10-10');
270push(@$images,$example);
271
272print "Negate...\n";
273$example=$model->Clone();
274$example->Label('Negate');
275$example->Negate();
276push(@$images,$example);
277
278print "Normalize...\n";
279$example=$model->Clone();
280$example->Label('Normalize');
281$example->Normalize();
282push(@$images,$example);
283
284print "Oil Paint...\n";
285$example=$model->Clone();
286$example->Label('Oil Paint');
287$example->OilPaint();
288push(@$images,$example);
289
290print "Plasma...\n";
291$plasma=Image::Magick->new;
292$plasma->Set(size=>'130x194');
293$x=$plasma->ReadImage('plasma:fractal');
294warn "$x" if "$x";
295$plasma->Label('Plasma');
296push(@$images,$plasma);
297
298print "Polaroid...\n";
299$example=$model->Clone();
300$example->Label('Polaroid');
301$example->Polaroid(caption=>'Magick',rotate=>-5.0,gravity=>'center');
302push(@$images,$example);
303
304print "Quantize...\n";
305$example=$model->Clone();
306$example->Label('Quantize');
307$example->Quantize();
308push(@$images,$example);
309
310print "Radial Blur...\n";
311$example=$model->Clone();
312$example->Label('Radial Blur');
313$example->RadialBlur(10);
314push(@$images,$example);
315
316print "Raise...\n";
317$example=$model->Clone();
318$example->Label('Raise');
319$example->Raise('10x10');
320push(@$images,$example);
321
322print "Recolor...\n";
323$example=$model->Clone();
324$example->Label('Recolor');
325$example->Recolor([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]);
326push(@$images,$example);
327
328print "Reduce Noise...\n";
329$example=$model->Clone();
330$example->Label('Reduce Noise');
331$example->ReduceNoise();
332push(@$images,$example);
333
334print "Resize...\n";
335$example=$model->Clone();
336$example->Label('Resize');
337$example->Resize('60%');
338push(@$images,$example);
339
340print "Roll...\n";
341$example=$model->Clone();
342$example->Label('Roll');
343$example->Roll(geometry=>'+20+10');
344push(@$images,$example);
345
346print "Rotate...\n";
347$example=$model->Clone();
348$example->Label('Rotate');
349$example->Rotate(45);
350push(@$images,$example);
351
352print "Sample...\n";
353$example=$model->Clone();
354$example->Label('Sample');
355$example->Sample('60%');
356push(@$images,$example);
357
358print "Scale...\n";
359$example=$model->Clone();
360$example->Label('Scale');
361$example->Scale('60%');
362push(@$images,$example);
363
364print "Segment...\n";
365$example=$model->Clone();
366$example->Label('Segment');
367$example->Segment();
368push(@$images,$example);
369
370print "Shade...\n";
371$example=$model->Clone();
372$example->Label('Shade');
373$example->Shade(geometry=>'30x30',gray=>'true');
374push(@$images,$example);
375
376print "Sharpen...\n";
377$example=$model->Clone();
378$example->Label('Sharpen');
379$example->Sharpen('0.0x1.0');
380push(@$images,$example);
381
382print "Shave...\n";
383$example=$model->Clone();
384$example->Label('Shave');
385$example->Shave('10x10');
386push(@$images,$example);
387
388print "Shear...\n";
389$example=$model->Clone();
390$example->Label('Shear');
391$example->Shear('-20x20');
392push(@$images,$example);
393
394print "Sketch...\n";
395$example=$model->Clone();
396$example->Label('Sketch');
397$example->Set(colorspace=>'Gray');
398$example->Sketch('0x20+120');
399push(@$images,$example);
400
401print "Sigmoidal Contrast...\n";
402$example=$model->Clone();
403$example->Label('Sigmoidal Contrast');
404$example->SigmoidalContrast("3x50%");
405push(@$images,$example);
406
407print "Spread...\n";
408$example=$model->Clone();
409$example->Label('Spread');
410$example->Spread();
411push(@$images,$example);
412
413print "Solarize...\n";
414$example=$model->Clone();
415$example->Label('Solarize');
416$example->Solarize();
417push(@$images,$example);
418
419print "Swirl...\n";
420$example=$model->Clone();
421$example->Label('Swirl');
422$example->Swirl(90);
423push(@$images,$example);
424
425print "Unsharp Mask...\n";
426$example=$model->Clone();
427$example->Label('Unsharp Mask');
428$example->UnsharpMask('0.0x1.0');
429push(@$images,$example);
430
431print "Vignette...\n";
432$example=$model->Clone();
433$example->Label('Vignette');
434$example->Vignette('0x20');
435push(@$images,$example);
436
437print "Wave...\n";
438$example=$model->Clone();
439$example->Label('Wave');
440$example->Wave('25x150');
441push(@$images,$example);
442#
443# Create image montage.
444#
445print "Montage...\n";
446$montage=$images->Montage(geometry=>'128x160+8+4>',gravity=>'Center',
447 tile=>'5x+10+200',compose=>'over',background=>'#ffffff',
448 font=>'Generic.ttf',pointsize=>18,fill=>'#600',stroke=>'none',
449 shadow=>'true');
450
451$logo=Image::Magick->new();
452$logo->Read('logo:');
453$logo->Zoom('40%');
454$montage->Composite(image=>$logo,gravity=>'North');
455
456print "Write...\n";
457$montage->Set(matte=>'false');
458$montage->Write('demo.jpg');
459print "Display...\n";
460$montage->Write('win:');