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