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