examples.pl 10 KB

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