blob: 16cab79b7a875980351c28a89cccbc25e5c59cc5 [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";
255$example->Label('Monochrome');
256$example->Quantize(colorspace=>'gray',colors=>2,dither=>'false');
257push(@$images,$example);
258
259print "Motion Blur...\n";
260$example=$model->Clone();
261$example->Label('Motion Blur');
262$example->MotionBlur('0x13+10-10');
263push(@$images,$example);
264
265print "Negate...\n";
266$example=$model->Clone();
267$example->Label('Negate');
268$example->Negate();
269push(@$images,$example);
270
271print "Normalize...\n";
272$example=$model->Clone();
273$example->Label('Normalize');
274$example->Normalize();
275push(@$images,$example);
276
277print "Oil Paint...\n";
278$example=$model->Clone();
279$example->Label('Oil Paint');
280$example->OilPaint();
281push(@$images,$example);
282
283print "Plasma...\n";
284$plasma=Image::Magick->new;
285$plasma->Set(size=>'130x194');
286$x=$plasma->ReadImage('plasma:fractal');
287warn "$x" if "$x";
288$plasma->Label('Plasma');
289push(@$images,$plasma);
290
291print "Polaroid...\n";
292$example=$model->Clone();
293$example->Label('Polaroid');
294$example->Polaroid(caption=>'Magick',rotate=>-5.0,gravity=>'center');
295push(@$images,$example);
296
297print "Quantize...\n";
298$example=$model->Clone();
299$example->Label('Quantize');
300$example->Quantize();
301push(@$images,$example);
302
303print "Radial Blur...\n";
304$example=$model->Clone();
305$example->Label('Radial Blur');
306$example->RadialBlur(10);
307push(@$images,$example);
308
309print "Raise...\n";
310$example=$model->Clone();
311$example->Label('Raise');
312$example->Raise('10x10');
313push(@$images,$example);
314
315print "Recolor...\n";
316$example=$model->Clone();
317$example->Label('Recolor');
318$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]);
319push(@$images,$example);
320
321print "Reduce Noise...\n";
322$example=$model->Clone();
323$example->Label('Reduce Noise');
324$example->ReduceNoise();
325push(@$images,$example);
326
327print "Resize...\n";
328$example=$model->Clone();
329$example->Label('Resize');
330$example->Resize('60%');
331push(@$images,$example);
332
333print "Roll...\n";
334$example=$model->Clone();
335$example->Label('Roll');
336$example->Roll(geometry=>'+20+10');
337push(@$images,$example);
338
339print "Rotate...\n";
340$example=$model->Clone();
341$example->Label('Rotate');
342$example->Rotate(45);
343push(@$images,$example);
344
345print "Sample...\n";
346$example=$model->Clone();
347$example->Label('Sample');
348$example->Sample('60%');
349push(@$images,$example);
350
351print "Scale...\n";
352$example=$model->Clone();
353$example->Label('Scale');
354$example->Scale('60%');
355push(@$images,$example);
356
357print "Segment...\n";
358$example=$model->Clone();
359$example->Label('Segment');
360$example->Segment();
361push(@$images,$example);
362
363print "Shade...\n";
364$example=$model->Clone();
365$example->Label('Shade');
366$example->Shade(geometry=>'30x30',gray=>'true');
367push(@$images,$example);
368
369print "Sharpen...\n";
370$example=$model->Clone();
371$example->Label('Sharpen');
372$example->Sharpen('0.0x1.0');
373push(@$images,$example);
374
375print "Shave...\n";
376$example=$model->Clone();
377$example->Label('Shave');
378$example->Shave('10x10');
379push(@$images,$example);
380
381print "Shear...\n";
382$example=$model->Clone();
383$example->Label('Shear');
384$example->Shear('-20x20');
385push(@$images,$example);
386
387print "Sketch...\n";
388$example=$model->Clone();
389$example->Label('Sketch');
390$example->Set(colorspace=>'Gray');
391$example->Sketch('0x20+120');
392push(@$images,$example);
393
394print "Sigmoidal Contrast...\n";
395$example=$model->Clone();
396$example->Label('Sigmoidal Contrast');
397$example->SigmoidalContrast("3x50%");
398push(@$images,$example);
399
400print "Spread...\n";
401$example=$model->Clone();
402$example->Label('Spread');
403$example->Spread();
404push(@$images,$example);
405
406print "Solarize...\n";
407$example=$model->Clone();
408$example->Label('Solarize');
409$example->Solarize();
410push(@$images,$example);
411
412print "Swirl...\n";
413$example=$model->Clone();
414$example->Label('Swirl');
415$example->Swirl(90);
416push(@$images,$example);
417
418print "Unsharp Mask...\n";
419$example=$model->Clone();
420$example->Label('Unsharp Mask');
421$example->UnsharpMask('0.0x1.0');
422push(@$images,$example);
423
424print "Vignette...\n";
425$example=$model->Clone();
426$example->Label('Vignette');
427$example->Vignette('0x20');
428push(@$images,$example);
429
430print "Wave...\n";
431$example=$model->Clone();
432$example->Label('Wave');
433$example->Wave('25x150');
434push(@$images,$example);
435#
436# Create image montage.
437#
438print "Montage...\n";
439$montage=$images->Montage(geometry=>'128x160+8+4>',gravity=>'Center',
440 tile=>'5x+10+200',compose=>'over',background=>'#ffffff',
441 font=>'Generic.ttf',pointsize=>18,fill=>'#600',stroke=>'none',
442 shadow=>'true');
443
444$logo=Image::Magick->new();
445$logo->Read('logo:');
446$logo->Zoom('40%');
447$montage->Composite(image=>$logo,gravity=>'North');
448
449print "Write...\n";
450$montage->Set(matte=>'false');
451$montage->Write('demo.jpg');
452print "Display...\n";
453$montage->Write('win:');