rmagick 2.16.0 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rmagick might be problematic. Click here for more details.

Files changed (405) hide show
  1. checksums.yaml +5 -5
  2. data/.codeclimate.yml +63 -0
  3. data/.devcontainer/Dockerfile +14 -0
  4. data/.devcontainer/ImageMagick6/devcontainer.json +11 -0
  5. data/.devcontainer/devcontainer.json +11 -0
  6. data/.devcontainer/setup-repo.sh +10 -0
  7. data/.devcontainer/setup-user.sh +45 -0
  8. data/.editorconfig +3 -0
  9. data/.github/ISSUE_TEMPLATE.md +17 -0
  10. data/.github/workflows/ci.yml +79 -0
  11. data/.gitignore +5 -1
  12. data/.rspec +1 -0
  13. data/.rubocop.yml +37 -340
  14. data/.rubocop_todo.yml +448 -0
  15. data/.yardopts +5 -0
  16. data/CHANGELOG.md +435 -0
  17. data/CODE_OF_CONDUCT.md +122 -7
  18. data/CONTRIBUTING.md +37 -6
  19. data/Gemfile +0 -6
  20. data/README.md +317 -0
  21. data/Rakefile +37 -35
  22. data/before_install_linux.sh +65 -28
  23. data/before_install_osx.sh +58 -2
  24. data/ext/RMagick/extconf.rb +286 -393
  25. data/ext/RMagick/rmagick.c +106 -111
  26. data/ext/RMagick/rmagick.h +235 -331
  27. data/ext/RMagick/rmagick_gvl.h +224 -0
  28. data/ext/RMagick/rmdraw.c +484 -842
  29. data/ext/RMagick/rmenum.c +316 -755
  30. data/ext/RMagick/rmfill.c +281 -191
  31. data/ext/RMagick/rmilist.c +450 -455
  32. data/ext/RMagick/rmimage.c +6247 -5289
  33. data/ext/RMagick/rminfo.c +721 -894
  34. data/ext/RMagick/rmkinfo.c +228 -0
  35. data/ext/RMagick/rmmain.c +727 -519
  36. data/ext/RMagick/rmmontage.c +127 -172
  37. data/ext/RMagick/rmpixel.c +638 -431
  38. data/ext/RMagick/rmstruct.c +102 -282
  39. data/ext/RMagick/rmutil.c +450 -363
  40. data/lib/rmagick/version.rb +5 -4
  41. data/lib/rmagick.rb +2 -0
  42. data/lib/rmagick_internal.rb +349 -413
  43. data/lib/rvg/clippath.rb +3 -4
  44. data/lib/rvg/container.rb +30 -22
  45. data/lib/rvg/deep_equal.rb +11 -11
  46. data/lib/rvg/describable.rb +2 -2
  47. data/lib/rvg/embellishable.rb +63 -68
  48. data/lib/rvg/misc.rb +136 -139
  49. data/lib/rvg/paint.rb +2 -1
  50. data/lib/rvg/pathdata.rb +7 -8
  51. data/lib/rvg/rvg.rb +47 -46
  52. data/lib/rvg/stretchable.rb +22 -28
  53. data/lib/rvg/stylable.rb +12 -10
  54. data/lib/rvg/text.rb +169 -165
  55. data/lib/rvg/transformable.rb +17 -16
  56. data/lib/rvg/units.rb +5 -5
  57. data/rmagick.gemspec +16 -39
  58. metadata +118 -395
  59. data/.hound.yml +0 -2
  60. data/.simplecov +0 -27
  61. data/.travis.yml +0 -74
  62. data/Doxyfile +0 -1514
  63. data/README.textile +0 -251
  64. data/deprecated/RMagick.rb +0 -6
  65. data/doc/.cvsignore +0 -1
  66. data/doc/comtasks.html +0 -287
  67. data/doc/constants.html +0 -1581
  68. data/doc/css/doc.css +0 -299
  69. data/doc/css/popup.css +0 -34
  70. data/doc/css/ref.css +0 -67
  71. data/doc/draw.html +0 -3272
  72. data/doc/ex/InitialCoords.rb +0 -22
  73. data/doc/ex/NewCoordSys.rb +0 -30
  74. data/doc/ex/OrigCoordSys.rb +0 -16
  75. data/doc/ex/PreserveAspectRatio.rb +0 -204
  76. data/doc/ex/RotateScale.rb +0 -36
  77. data/doc/ex/Skew.rb +0 -38
  78. data/doc/ex/Use01.rb +0 -15
  79. data/doc/ex/Use02.rb +0 -20
  80. data/doc/ex/Use03.rb +0 -16
  81. data/doc/ex/ViewBox.rb +0 -31
  82. data/doc/ex/adaptive_threshold.rb +0 -9
  83. data/doc/ex/add_noise.rb +0 -16
  84. data/doc/ex/affine.rb +0 -48
  85. data/doc/ex/affine_transform.rb +0 -20
  86. data/doc/ex/arc.rb +0 -49
  87. data/doc/ex/arcpath.rb +0 -32
  88. data/doc/ex/arcs01.rb +0 -28
  89. data/doc/ex/arcs02.rb +0 -59
  90. data/doc/ex/average.rb +0 -15
  91. data/doc/ex/axes.rb +0 -64
  92. data/doc/ex/baseline_shift01.rb +0 -17
  93. data/doc/ex/bilevel_channel.rb +0 -8
  94. data/doc/ex/blur_image.rb +0 -12
  95. data/doc/ex/border.rb +0 -10
  96. data/doc/ex/bounding_box.rb +0 -42
  97. data/doc/ex/cbezier1.rb +0 -41
  98. data/doc/ex/cbezier2.rb +0 -41
  99. data/doc/ex/cbezier3.rb +0 -41
  100. data/doc/ex/cbezier4.rb +0 -42
  101. data/doc/ex/cbezier5.rb +0 -42
  102. data/doc/ex/cbezier6.rb +0 -53
  103. data/doc/ex/channel.rb +0 -25
  104. data/doc/ex/charcoal.rb +0 -12
  105. data/doc/ex/chop.rb +0 -29
  106. data/doc/ex/circle.rb +0 -33
  107. data/doc/ex/circle01.rb +0 -16
  108. data/doc/ex/clip_path.rb +0 -60
  109. data/doc/ex/coalesce.rb +0 -57
  110. data/doc/ex/color_fill_to_border.rb +0 -29
  111. data/doc/ex/color_floodfill.rb +0 -28
  112. data/doc/ex/color_histogram.rb +0 -47
  113. data/doc/ex/color_reset.rb +0 -11
  114. data/doc/ex/colorize.rb +0 -16
  115. data/doc/ex/colors.rb +0 -64
  116. data/doc/ex/compose_mask.rb +0 -22
  117. data/doc/ex/composite.rb +0 -133
  118. data/doc/ex/composite_layers.rb +0 -53
  119. data/doc/ex/composite_tiled.rb +0 -21
  120. data/doc/ex/contrast.rb +0 -36
  121. data/doc/ex/crop.rb +0 -31
  122. data/doc/ex/crop_with_gravity.rb +0 -42
  123. data/doc/ex/cubic01.rb +0 -43
  124. data/doc/ex/cubic02.rb +0 -91
  125. data/doc/ex/cycle_colormap.rb +0 -21
  126. data/doc/ex/dissolve.rb +0 -12
  127. data/doc/ex/drawcomp.rb +0 -42
  128. data/doc/ex/drop_shadow.rb +0 -60
  129. data/doc/ex/edge.rb +0 -11
  130. data/doc/ex/ellipse.rb +0 -45
  131. data/doc/ex/ellipse01.rb +0 -21
  132. data/doc/ex/emboss.rb +0 -11
  133. data/doc/ex/enhance.rb +0 -28
  134. data/doc/ex/equalize.rb +0 -11
  135. data/doc/ex/evenodd.rb +0 -42
  136. data/doc/ex/fill_pattern.rb +0 -23
  137. data/doc/ex/flatten_images.rb +0 -36
  138. data/doc/ex/flip.rb +0 -11
  139. data/doc/ex/flop.rb +0 -11
  140. data/doc/ex/font_styles.rb +0 -32
  141. data/doc/ex/fonts.rb +0 -20
  142. data/doc/ex/frame.rb +0 -12
  143. data/doc/ex/gaussian_blur.rb +0 -11
  144. data/doc/ex/get_multiline_type_metrics.rb +0 -41
  145. data/doc/ex/get_pixels.rb +0 -47
  146. data/doc/ex/get_type_metrics.rb +0 -141
  147. data/doc/ex/gradientfill.rb +0 -27
  148. data/doc/ex/grav.rb +0 -45
  149. data/doc/ex/gravity.rb +0 -80
  150. data/doc/ex/group.rb +0 -26
  151. data/doc/ex/hatchfill.rb +0 -27
  152. data/doc/ex/image.rb +0 -44
  153. data/doc/ex/images/Apple.miff +0 -0
  154. data/doc/ex/images/Ballerina.jpg +0 -0
  155. data/doc/ex/images/Ballerina3.jpg +0 -0
  156. data/doc/ex/images/Button_0.gif +0 -0
  157. data/doc/ex/images/Button_1.gif +0 -0
  158. data/doc/ex/images/Button_2.gif +0 -0
  159. data/doc/ex/images/Button_3.gif +0 -0
  160. data/doc/ex/images/Button_4.gif +0 -0
  161. data/doc/ex/images/Button_5.gif +0 -0
  162. data/doc/ex/images/Button_6.gif +0 -0
  163. data/doc/ex/images/Button_7.gif +0 -0
  164. data/doc/ex/images/Button_8.gif +0 -0
  165. data/doc/ex/images/Button_9.gif +0 -0
  166. data/doc/ex/images/Button_A.gif +0 -0
  167. data/doc/ex/images/Button_B.gif +0 -0
  168. data/doc/ex/images/Button_C.gif +0 -0
  169. data/doc/ex/images/Button_D.gif +0 -0
  170. data/doc/ex/images/Button_E.gif +0 -0
  171. data/doc/ex/images/Button_F.gif +0 -0
  172. data/doc/ex/images/Button_G.gif +0 -0
  173. data/doc/ex/images/Button_H.gif +0 -0
  174. data/doc/ex/images/Button_I.gif +0 -0
  175. data/doc/ex/images/Button_J.gif +0 -0
  176. data/doc/ex/images/Button_K.gif +0 -0
  177. data/doc/ex/images/Button_L.gif +0 -0
  178. data/doc/ex/images/Button_M.gif +0 -0
  179. data/doc/ex/images/Button_N.gif +0 -0
  180. data/doc/ex/images/Button_O.gif +0 -0
  181. data/doc/ex/images/Button_P.gif +0 -0
  182. data/doc/ex/images/Button_Q.gif +0 -0
  183. data/doc/ex/images/Button_R.gif +0 -0
  184. data/doc/ex/images/Button_S.gif +0 -0
  185. data/doc/ex/images/Button_T.gif +0 -0
  186. data/doc/ex/images/Button_U.gif +0 -0
  187. data/doc/ex/images/Button_V.gif +0 -0
  188. data/doc/ex/images/Button_W.gif +0 -0
  189. data/doc/ex/images/Button_X.gif +0 -0
  190. data/doc/ex/images/Button_Y.gif +0 -0
  191. data/doc/ex/images/Button_Z.gif +0 -0
  192. data/doc/ex/images/Cheetah.jpg +0 -0
  193. data/doc/ex/images/Coffee.wmf +0 -0
  194. data/doc/ex/images/Flower_Hat.jpg +0 -0
  195. data/doc/ex/images/Gold_Statue.jpg +0 -0
  196. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  197. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  198. data/doc/ex/images/Leaf.miff +0 -0
  199. data/doc/ex/images/No.wmf +0 -0
  200. data/doc/ex/images/Polynesia.jpg +0 -0
  201. data/doc/ex/images/Red_Rocks.jpg +0 -0
  202. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  203. data/doc/ex/images/Shorts.jpg +0 -0
  204. data/doc/ex/images/Snake.wmf +0 -0
  205. data/doc/ex/images/Violin.jpg +0 -0
  206. data/doc/ex/images/Yellow_Rose.miff +0 -0
  207. data/doc/ex/images/big-duck.gif +0 -0
  208. data/doc/ex/images/duck.gif +0 -0
  209. data/doc/ex/images/duck0.gif +0 -0
  210. data/doc/ex/images/duck1.gif +0 -0
  211. data/doc/ex/images/duck10.gif +0 -0
  212. data/doc/ex/images/duck11.gif +0 -0
  213. data/doc/ex/images/duck12.gif +0 -0
  214. data/doc/ex/images/duck13.gif +0 -0
  215. data/doc/ex/images/duck14.gif +0 -0
  216. data/doc/ex/images/duck15.gif +0 -0
  217. data/doc/ex/images/duck2.gif +0 -0
  218. data/doc/ex/images/duck3.gif +0 -0
  219. data/doc/ex/images/duck4.gif +0 -0
  220. data/doc/ex/images/duck5.gif +0 -0
  221. data/doc/ex/images/duck6.gif +0 -0
  222. data/doc/ex/images/duck7.gif +0 -0
  223. data/doc/ex/images/duck8.gif +0 -0
  224. data/doc/ex/images/duck9.gif +0 -0
  225. data/doc/ex/images/graydient230x6.gif +0 -0
  226. data/doc/ex/images/image_with_profile.jpg +0 -0
  227. data/doc/ex/images/logo400x83.gif +0 -0
  228. data/doc/ex/images/model.miff +0 -0
  229. data/doc/ex/images/notimplemented.gif +0 -0
  230. data/doc/ex/images/smile.miff +0 -0
  231. data/doc/ex/images/spin.gif +0 -0
  232. data/doc/ex/implode.rb +0 -34
  233. data/doc/ex/level.rb +0 -11
  234. data/doc/ex/level_colors.rb +0 -11
  235. data/doc/ex/line.rb +0 -41
  236. data/doc/ex/line01.rb +0 -21
  237. data/doc/ex/mask.rb +0 -35
  238. data/doc/ex/matte_fill_to_border.rb +0 -39
  239. data/doc/ex/matte_floodfill.rb +0 -32
  240. data/doc/ex/matte_replace.rb +0 -39
  241. data/doc/ex/median_filter.rb +0 -28
  242. data/doc/ex/modulate.rb +0 -11
  243. data/doc/ex/mono.rb +0 -23
  244. data/doc/ex/morph.rb +0 -25
  245. data/doc/ex/mosaic.rb +0 -35
  246. data/doc/ex/motion_blur.rb +0 -11
  247. data/doc/ex/negate.rb +0 -11
  248. data/doc/ex/negate_channel.rb +0 -9
  249. data/doc/ex/nested_rvg.rb +0 -21
  250. data/doc/ex/nonzero.rb +0 -42
  251. data/doc/ex/normalize.rb +0 -11
  252. data/doc/ex/oil_paint.rb +0 -11
  253. data/doc/ex/opacity.rb +0 -37
  254. data/doc/ex/ordered_dither.rb +0 -11
  255. data/doc/ex/path.rb +0 -63
  256. data/doc/ex/pattern1.rb +0 -25
  257. data/doc/ex/pattern2.rb +0 -26
  258. data/doc/ex/polaroid.rb +0 -27
  259. data/doc/ex/polygon.rb +0 -23
  260. data/doc/ex/polygon01.rb +0 -21
  261. data/doc/ex/polyline.rb +0 -22
  262. data/doc/ex/polyline01.rb +0 -21
  263. data/doc/ex/posterize.rb +0 -8
  264. data/doc/ex/preview.rb +0 -8
  265. data/doc/ex/qbezierpath.rb +0 -52
  266. data/doc/ex/quad01.rb +0 -34
  267. data/doc/ex/quantize-m.rb +0 -25
  268. data/doc/ex/radial_blur.rb +0 -9
  269. data/doc/ex/raise.rb +0 -8
  270. data/doc/ex/random_threshold_channel.rb +0 -13
  271. data/doc/ex/rect01.rb +0 -14
  272. data/doc/ex/rect02.rb +0 -20
  273. data/doc/ex/rectangle.rb +0 -34
  274. data/doc/ex/reduce_noise.rb +0 -28
  275. data/doc/ex/remap.rb +0 -11
  276. data/doc/ex/remap_images.rb +0 -19
  277. data/doc/ex/resize_to_fill.rb +0 -8
  278. data/doc/ex/resize_to_fit.rb +0 -8
  279. data/doc/ex/roll.rb +0 -9
  280. data/doc/ex/rotate.rb +0 -44
  281. data/doc/ex/rotate_f.rb +0 -14
  282. data/doc/ex/roundrect.rb +0 -33
  283. data/doc/ex/rubyname.rb +0 -30
  284. data/doc/ex/rvg_clippath.rb +0 -12
  285. data/doc/ex/rvg_linecap.rb +0 -42
  286. data/doc/ex/rvg_linejoin.rb +0 -40
  287. data/doc/ex/rvg_opacity.rb +0 -18
  288. data/doc/ex/rvg_pattern.rb +0 -26
  289. data/doc/ex/rvg_stroke_dasharray.rb +0 -11
  290. data/doc/ex/segment.rb +0 -11
  291. data/doc/ex/sepiatone.rb +0 -7
  292. data/doc/ex/shade.rb +0 -11
  293. data/doc/ex/shadow.rb +0 -30
  294. data/doc/ex/shave.rb +0 -15
  295. data/doc/ex/shear.rb +0 -10
  296. data/doc/ex/sketch.rb +0 -17
  297. data/doc/ex/skewx.rb +0 -51
  298. data/doc/ex/skewy.rb +0 -47
  299. data/doc/ex/smile.rb +0 -125
  300. data/doc/ex/solarize.rb +0 -11
  301. data/doc/ex/sparse_color.rb +0 -54
  302. data/doc/ex/splice.rb +0 -8
  303. data/doc/ex/spread.rb +0 -11
  304. data/doc/ex/stegano.rb +0 -55
  305. data/doc/ex/stroke_dasharray.rb +0 -42
  306. data/doc/ex/stroke_fill.rb +0 -10
  307. data/doc/ex/stroke_linecap.rb +0 -44
  308. data/doc/ex/stroke_linejoin.rb +0 -48
  309. data/doc/ex/stroke_width.rb +0 -49
  310. data/doc/ex/swirl.rb +0 -17
  311. data/doc/ex/text.rb +0 -37
  312. data/doc/ex/text01.rb +0 -16
  313. data/doc/ex/text_align.rb +0 -36
  314. data/doc/ex/text_antialias.rb +0 -37
  315. data/doc/ex/text_styles.rb +0 -19
  316. data/doc/ex/text_undercolor.rb +0 -28
  317. data/doc/ex/texture_fill_to_border.rb +0 -34
  318. data/doc/ex/texture_floodfill.rb +0 -32
  319. data/doc/ex/texturefill.rb +0 -24
  320. data/doc/ex/threshold.rb +0 -13
  321. data/doc/ex/to_blob.rb +0 -13
  322. data/doc/ex/translate.rb +0 -39
  323. data/doc/ex/transparent.rb +0 -38
  324. data/doc/ex/transpose.rb +0 -9
  325. data/doc/ex/transverse.rb +0 -9
  326. data/doc/ex/tref01.rb +0 -24
  327. data/doc/ex/triangle01.rb +0 -15
  328. data/doc/ex/trim.rb +0 -23
  329. data/doc/ex/tspan01.rb +0 -17
  330. data/doc/ex/tspan02.rb +0 -17
  331. data/doc/ex/tspan03.rb +0 -19
  332. data/doc/ex/unsharp_mask.rb +0 -28
  333. data/doc/ex/viewex.rb +0 -33
  334. data/doc/ex/vignette.rb +0 -12
  335. data/doc/ex/watermark.rb +0 -27
  336. data/doc/ex/wave.rb +0 -9
  337. data/doc/ex/wet_floor.rb +0 -58
  338. data/doc/ex/writing_mode01.rb +0 -26
  339. data/doc/ex/writing_mode02.rb +0 -26
  340. data/doc/ilist.html +0 -2056
  341. data/doc/image1.html +0 -4680
  342. data/doc/image2.html +0 -3665
  343. data/doc/image3.html +0 -4522
  344. data/doc/imageattrs.html +0 -1638
  345. data/doc/imusage.html +0 -514
  346. data/doc/index.html +0 -416
  347. data/doc/info.html +0 -1499
  348. data/doc/magick.html +0 -565
  349. data/doc/optequiv.html +0 -2435
  350. data/doc/rvg.html +0 -975
  351. data/doc/rvgclip.html +0 -248
  352. data/doc/rvggroup.html +0 -305
  353. data/doc/rvgimage.html +0 -289
  354. data/doc/rvgpattern.html +0 -475
  355. data/doc/rvgshape.html +0 -406
  356. data/doc/rvgstyle.html +0 -270
  357. data/doc/rvgtext.html +0 -465
  358. data/doc/rvgtspan.html +0 -238
  359. data/doc/rvgtut.html +0 -530
  360. data/doc/rvguse.html +0 -145
  361. data/doc/rvgxform.html +0 -294
  362. data/doc/scripts/doc.js +0 -22
  363. data/doc/scripts/stripeTables.js +0 -23
  364. data/doc/struct.html +0 -1339
  365. data/doc/usage.html +0 -1621
  366. data/examples/constitute.rb +0 -7
  367. data/examples/crop_with_gravity.rb +0 -42
  368. data/examples/demo.rb +0 -324
  369. data/examples/describe.rb +0 -43
  370. data/examples/find_similar_region.rb +0 -34
  371. data/examples/histogram.rb +0 -321
  372. data/examples/identify.rb +0 -185
  373. data/examples/image_opacity.rb +0 -29
  374. data/examples/import_export.rb +0 -31
  375. data/examples/pattern_fill.rb +0 -38
  376. data/examples/rotating_text.rb +0 -44
  377. data/examples/spinner.rb +0 -49
  378. data/examples/thumbnail.rb +0 -64
  379. data/examples/vignette.rb +0 -78
  380. data/spec/rmagick/ImageList1_spec.rb +0 -24
  381. data/spec/rmagick/draw_spec.rb +0 -156
  382. data/spec/rmagick/image/blue_shift_spec.rb +0 -16
  383. data/spec/rmagick/image/composite_spec.rb +0 -140
  384. data/spec/rmagick/image/constitute_spec.rb +0 -15
  385. data/spec/rmagick/image/dispatch_spec.rb +0 -18
  386. data/spec/rmagick/image/from_blob_spec.rb +0 -14
  387. data/spec/rmagick/image/ping_spec.rb +0 -14
  388. data/spec/rmagick/image/properties_spec.rb +0 -29
  389. data/spec/spec_helper.rb +0 -4
  390. data/test/Image1.rb +0 -565
  391. data/test/Image2.rb +0 -1304
  392. data/test/Image3.rb +0 -1030
  393. data/test/ImageList1.rb +0 -806
  394. data/test/ImageList2.rb +0 -385
  395. data/test/Image_attributes.rb +0 -697
  396. data/test/Import_Export.rb +0 -121
  397. data/test/Info.rb +0 -345
  398. data/test/Magick.rb +0 -321
  399. data/test/Pixel.rb +0 -116
  400. data/test/Preview.rb +0 -57
  401. data/test/cmyk.icm +0 -0
  402. data/test/srgb.icm +0 -0
  403. data/test/test_all_basic.rb +0 -38
  404. data/test/tmpnam_test.rb +0 -50
  405. data/wercker.yml +0 -10
data/doc/ex/line.rb DELETED
@@ -1,41 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(250, 250, Magick::HatchFill.new('white','LightCyan2'))
6
-
7
- gc = Magick::Draw.new
8
-
9
- gc.stroke_linejoin('round')
10
-
11
- # Draw 3 lines in 3 colors.
12
- # Make each line 2 pixels wide.
13
- gc.stroke('red')
14
- gc.stroke_width(3)
15
- gc.line(50,50, 50,200)
16
- gc.stroke('blue')
17
- gc.line(50,200, 200,200)
18
- gc.stroke('green')
19
- gc.line(200,200, 50,50)
20
-
21
- # Identify the endpoints with gray circles
22
- gc.stroke('gray50')
23
- gc.stroke_width(1)
24
- gc.fill_opacity(0)
25
- gc.circle(50,50, 53,53)
26
- gc.circle(50,200, 53,203)
27
- gc.circle(200,200, 203,203)
28
-
29
- # Annotate the endpoints
30
- gc.font_weight(Magick::NormalWeight)
31
- gc.font_style(Magick::NormalStyle)
32
- gc.fill('black')
33
- gc.stroke('transparent')
34
- gc.text(30,40, "'50,50'")
35
- gc.text(30,220, "'50,200'")
36
- gc.text(180, 220, "'200,200'")
37
-
38
- gc.draw(imgl)
39
- imgl.border!(1,1, 'LightCyan2')
40
-
41
- imgl.write('line.gif')
data/doc/ex/line01.rb DELETED
@@ -1,21 +0,0 @@
1
- require 'rvg/rvg'
2
-
3
- Magick::RVG.dpi = 90
4
-
5
- rvg = Magick::RVG.new(12.cm, 4.cm).viewbox(0, 0, 1200, 400) do |canvas|
6
- canvas.background_fill = 'white'
7
- canvas.desc = 'Example line01 - lines expressed in user coordinates'
8
-
9
- # Show outline of canvas using the 'rect' method
10
- canvas.rect(1195, 395, 1, 1).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>2)
11
-
12
- canvas.g.styles(:stroke=>'green') do |grp|
13
- grp.line(100, 300, 300, 100).styles(:stroke_width=>5)
14
- grp.line(300, 300, 500, 100).styles(:stroke_width=>10)
15
- grp.line(500, 300, 700, 100).styles(:stroke_width=>15)
16
- grp.line(700, 300, 900, 100).styles(:stroke_width=>20)
17
- grp.line(900, 300, 1100, 100).styles(:stroke_width=>25)
18
- end
19
- end
20
-
21
- rvg.draw.write('line01.gif')
data/doc/ex/mask.rb DELETED
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- # This example demonstrates the mask attribute. The mask image must
6
- # be the same size as the image being masked. Since this mask image does
7
- # not have an alpha channel, the intensity of each pixel is used to define the
8
- # mask. White pixels are more intense than black pixels, so the area of the
9
- # image masked by white pixels will remain unchanged, while the area of the
10
- # image masked by black pixels is affected by any transformations.
11
-
12
- # In this example the mask is simply the words "Flower Hat" in black text
13
- # positioned near the bottom of the white clip mask image.
14
-
15
- img = Magick::Image.read('images/Flower_Hat.jpg').first
16
- q = Magick::Image.new(img.columns, img.rows)
17
-
18
- gc = Magick::Draw.new
19
- gc.annotate(q, 0, 0, 0, 0, 'Flower Hat') do
20
- gc.gravity = Magick::SouthGravity
21
- gc.pointsize = 36
22
- gc.font_weight = Magick::BoldWeight
23
- end
24
-
25
- # Set the matte attribute to false, indicating the absence of an alpha channel
26
- # in the mask image. Assign the mask image to the mask= attribute of the image
27
- # being masked.
28
-
29
- q.matte = false
30
- img.mask q
31
-
32
- # Use the #level method to darken the image under the black part of the mask.
33
-
34
- img = img.level(0, Magick::QuantumRange, 0.50)
35
- img.write('mask.jpg')
@@ -1,39 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- img = Magick::Image.new(200,200)
6
- img.compression = Magick::LZWCompression
7
-
8
- bg = Magick::Image.read('plasma:fractal') { self.size = '200x200' }
9
- bg[0].matte = false
10
-
11
- gc = Magick::Draw.new
12
- gc.stroke_width(2)
13
- gc.stroke('black')
14
- gc.fill('white')
15
- gc.roundrectangle(0, 0, 199, 199, 8, 8)
16
-
17
- gc.fill('black')
18
- gc.circle(100, 45, 100, 25)
19
- gc.circle( 45, 100, 25, 100)
20
- gc.circle(100, 155, 100, 175)
21
- gc.circle(155, 100, 175, 100)
22
-
23
- gc.draw(img)
24
-
25
- img.write('matte_fill_to_border_before.gif')
26
-
27
- # Set the border color. Set the fuzz attribute so that
28
- # the matte fill will fill the aliased pixels around
29
- # the edges of the black circles.
30
- img.border_color = 'black'
31
- img.fuzz = 10
32
- img = img.matte_fill_to_border(100, 100)
33
-
34
- # Composite the image over a nice bright background
35
- # so that the transparent pixels will be obvious.
36
- img = bg[0].composite(img, Magick::CenterGravity, Magick::OverCompositeOp)
37
-
38
- img.write('matte_fill_to_border_after.gif')
39
- exit
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- img = Magick::Image.new(200,200)
6
- img.compression = Magick::LZWCompression
7
-
8
- bg = Magick::Image.read('plasma:fractal') { self.size = '200x200' }
9
- bg[0].matte = false
10
-
11
- gc = Magick::Draw.new
12
- gc.stroke_width(2)
13
- gc.stroke('black')
14
- gc.fill('white')
15
- gc.roundrectangle(0, 0, 199, 199, 8, 8)
16
-
17
- gc.fill('yellow')
18
- gc.stroke('red')
19
- gc.circle(100, 100, 100, 25)
20
- gc.draw(img)
21
-
22
- img.write('matte_floodfill_before.gif')
23
-
24
- img.fuzz = 100
25
- img = img.matte_floodfill(100, 100)
26
-
27
- # Composite the image over a nice bright background
28
- # so that the transparent pixels will be obvious.
29
- img = bg[0].composite(img, Magick::CenterGravity, Magick::OverCompositeOp)
30
-
31
- img.write('matte_floodfill_after.gif')
32
- exit
@@ -1,39 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- img = Magick::Image.new(200,200)
6
- img.compression = Magick::LZWCompression
7
-
8
- bg = Magick::Image.read('plasma:fractal') { self.size = '200x200' }
9
- bg[0].matte = false
10
-
11
- gc = Magick::Draw.new
12
- gc.stroke_width(2)
13
- gc.stroke('black')
14
- gc.fill('white')
15
- gc.roundrectangle(0, 0, 199, 199, 8, 8)
16
-
17
- gc.fill('black')
18
- gc.circle(100, 45, 100, 25)
19
- gc.circle( 45, 100, 25, 100)
20
- gc.circle(100, 155, 100, 175)
21
- gc.circle(155, 100, 175, 100)
22
-
23
- gc.draw(img)
24
-
25
- img.write('matte_replace_before.gif')
26
-
27
- # Set the border color. Set the fuzz attribute so that
28
- # the matte fill will fill the aliased pixels around
29
- # the edges of the black circles.
30
- img.border_color = 'black'
31
- img.fuzz = 10
32
- img = img.matte_replace(100, 45)
33
-
34
- # Composite the image over a nice bright background
35
- # so that the transparent pixels will be obvious.
36
- img = bg[0].composite(img, Magick::CenterGravity, Magick::OverCompositeOp)
37
-
38
- img.write('matte_replace_after.gif')
39
- exit
@@ -1,28 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#median_filter method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
- img = img.add_noise(Magick::UniformNoise)
8
-
9
- eimg = img.median_filter(0.05)
10
-
11
- # Zoom in so we can see the change
12
- img.resize!(3)
13
- eimg.resize!(3)
14
-
15
- # Make a before-and-after composite
16
- eimg.crop!(eimg.columns/2, 0, eimg.columns/2, eimg.rows)
17
- img = img.composite(eimg, Magick::EastGravity, Magick::OverCompositeOp)
18
-
19
- # Draw a black line between the before and after parts.
20
- line = Magick::Draw.new
21
- line.line(img.columns/2, 0, img.columns/2, img.rows)
22
- line.draw(img)
23
-
24
- # Crop everything but the face.
25
- img.crop!(Magick::CenterGravity, 250, 200)
26
-
27
- img.write('median_filter.jpg')
28
- exit
data/doc/ex/modulate.rb DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#modulate method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img = img.modulate(0.85)
9
-
10
- img.write('modulate.jpg')
11
- exit
data/doc/ex/mono.rb DELETED
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the ImageListImage#quantize method by converting
5
- # a color image into a monochrome image.
6
-
7
- # Read the large color cheetah image and scale it to a third
8
- # of its size.
9
- cheetah = Magick::Image.read('images/Cheetah.jpg').first
10
- cheetah.scale!(0.33)
11
-
12
- # Quantize the cheetah image into 256 colors in the GRAY colorspace.
13
- mono_cheetah = cheetah.quantize 256, Magick::GRAYColorspace
14
-
15
- # Cut the top off the monochrome cheetah image.
16
- mono_bottom = mono_cheetah.crop 0, mono_cheetah.rows/2, mono_cheetah.columns, mono_cheetah.rows/2
17
-
18
- # Composite the half-height mono cheetah onto the bottom of
19
- # the original color cheetah.
20
- before_after = cheetah.composite mono_bottom, 0, cheetah.rows/2, Magick::OverCompositeOp
21
-
22
- before_after.write 'mono.jpg'
23
- exit
data/doc/ex/morph.rb DELETED
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- # Demonstrate the morph method
6
-
7
- # Read 4 digit image files. Create an
8
- # animated morph sequence by inserting 8
9
- # in-between images between each pair of digits.
10
-
11
- i = Magick::ImageList.new
12
- number = '0'
13
- 4.times do
14
- i.read 'images/Button_' + number + '.gif'
15
- number.succ!
16
- end
17
-
18
- puts 'This may take a few seconds...'
19
- morph = i.morph 8
20
- morph.delay = 12
21
- morph.iterations = 10000
22
- # Display the resulting sequence as an animation.
23
- # morph.animate(12)
24
- morph.write 'morph.gif'
25
- exit
data/doc/ex/mosaic.rb DELETED
@@ -1,35 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the mosaic method
5
-
6
- a = Magick::ImageList.new
7
-
8
- letter = 'A'
9
- 26.times do
10
- # 'M' is not the same size as the other letters.
11
- if letter != 'M'
12
- a.read('images/Button_'+letter+'.gif')
13
- end
14
- letter.succ!
15
- end
16
-
17
- # Make a copy of "a" with all the images quarter-sized
18
- b = Magick::ImageList.new
19
- page = Magick::Rectangle.new(0,0,0,0)
20
- a.scene = 0
21
- 5.times do |i|
22
- 5.times do |j|
23
- b << a.scale(0.25)
24
- page.x = j * b.columns
25
- page.y = i * b.rows
26
- b.page = page
27
- (a.scene += 1) rescue a.scene = 0
28
- end
29
- end
30
-
31
- # Make a 5x5 mosaic
32
- mosaic = b.mosaic
33
- mosaic.write('mosaic.gif')
34
- # mosaic.display
35
- exit
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#blur_image method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img = img.motion_blur(0,7,180)
9
-
10
- img.write('motion_blur.jpg')
11
- exit
data/doc/ex/negate.rb DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#negate method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img = img.negate
9
-
10
- img.write('negate.jpg')
11
- exit
@@ -1,9 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#negate_channel method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
- result = img.negate_channel(false, Magick::GreenChannel)
8
- result.write('negate_channel.jpg')
9
- exit
data/doc/ex/nested_rvg.rb DELETED
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rvg/rvg'
4
-
5
- target = Magick::RVG.new.viewbox(0,0,200,200) do |targ|
6
- targ.g.styles(:stroke_width=>20, :stroke=>'#ff5600', :fill=>'#abd600') do |grp|
7
- grp.circle(90, 100, 100)
8
- grp.circle(60, 100, 100)
9
- grp.circle(30, 100, 100)
10
- end
11
- end
12
-
13
- rvg = Magick::RVG.new(258, 100) do |canvas|
14
- canvas.background_fill = '#51396b'
15
- canvas.use(target, 0, 0, 100, 100)
16
- canvas.use(target, 100, 16.6667, 66.7, 66.7)
17
- canvas.use(target, 166.6667, 25, 50, 50)
18
- canvas.use(target, 216.6667, 30, 40, 40)
19
- end
20
-
21
- rvg.draw.write('nested_rvg.gif')
data/doc/ex/nonzero.rb DELETED
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rvg/rvg'
3
-
4
- Magick::RVG.dpi = 90
5
-
6
- rvg = Magick::RVG.new(12.cm, 4.cm).viewbox(0, 0, 1200, 400) do |canvas|
7
- canvas.background_fill = 'white'
8
- canvas.desc = "Example fillrule - nonzero - demonstrates fill_rule=>'nonzero'"
9
-
10
- canvas.rect(1195, 393, 1, 1).styles(:fill=>'none', :stroke=>'blue')
11
-
12
- triangle = Magick::RVG::Group.new do |defs|
13
- defs.path('M 16,0 L -8,9 v-18 z').styles(:fill=>'black', :stroke=>'none')
14
- end
15
-
16
- canvas.g.styles(:fill_rule=>'nonzero', :fill=>'red', :stroke=>'black', :stroke_width=>3) do |grp|
17
- grp.path('M 250,75 L 323,301 131,161 369,161 177,301 z')
18
- grp.use(triangle).translate(306.21, 249).rotate(72)
19
- grp.use(triangle).translate(175.16,193.2).rotate(216)
20
- grp.use(triangle).translate(314.26,161).rotate(0)
21
- grp.use(triangle).translate(221.16,268.8).rotate(144)
22
- grp.use(triangle).translate(233.21,126.98).rotate(288)
23
- grp.path('M 600,81 A 107,107 0 0,1 600,295 A 107,107 0 0,1 600,81 z' \
24
- 'M 600,139 A 49,49 0 0,1 600,237 A 49,49 0 0,1 600,139 z')
25
- grp.use(triangle).translate(600,188).rotate(0).translate(107,0).rotate(90)
26
- grp.use(triangle).translate(600,188).rotate(120).translate(107,0).rotate(90)
27
- grp.use(triangle).translate(600,188).rotate(240).translate(107,0).rotate(90)
28
- grp.use(triangle).translate(600,188).rotate(60).translate(49,0).rotate(90)
29
- grp.use(triangle).translate(600,188).rotate(180).translate(49,0).rotate(90)
30
- grp.use(triangle).translate(600,188).rotate(300).translate(49,0).rotate(90)
31
- grp.path('M 950,81 A 107,107 0 0,1 950,295 A 107,107 0 0,1 950,81 z' \
32
- 'M 950,139 A 49,49 0 0,0 950,237 A 49,49 0 0,0 950,139 z')
33
- grp.use(triangle).translate(950,188).rotate(0).translate(107,0).rotate(90)
34
- grp.use(triangle).translate(950,188).rotate(120).translate(107,0).rotate(90)
35
- grp.use(triangle).translate(950,188).rotate(240).translate(107,0).rotate(90)
36
- grp.use(triangle).translate(950,188).rotate(60).translate(49,0).rotate(-90)
37
- grp.use(triangle).translate(950,188).rotate(180).translate(49,0).rotate(-90)
38
- grp.use(triangle).translate(950,188).rotate(300).translate(49,0).rotate(-90)
39
- end
40
- end
41
-
42
- rvg.draw.write('nonzero.gif')
data/doc/ex/normalize.rb DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#normalize method
5
-
6
- img = Magick::Image.read('images/Hot_Air_Balloons.jpg').first
7
-
8
- img = img.normalize
9
-
10
- img.write('normalize.jpg')
11
- exit
data/doc/ex/oil_paint.rb DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#oil_paint method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img = img.oil_paint
9
-
10
- img.write('oil_paint.jpg')
11
- exit
data/doc/ex/opacity.rb DELETED
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- canvas = Magick::Image.new(260, 125)
5
- gc = Magick::Draw.new
6
- gc.fill('black')
7
- gc.rectangle(10,20, 250,90)
8
-
9
- gc.stroke('blue')
10
- gc.fill('yellow')
11
- gc.stroke_width(10)
12
-
13
- gc.opacity('25%')
14
- gc.roundrectangle(20,20, 60,90, 5,5)
15
-
16
- gc.opacity('50%')
17
- gc.roundrectangle(80,20, 120,90, 5,5)
18
-
19
- gc.opacity(0.75)
20
- gc.roundrectangle(140,20, 180,90, 5,5)
21
-
22
- gc.opacity(1)
23
- gc.roundrectangle(200,20, 240,90, 5,5)
24
-
25
- gc.font_weight(Magick::NormalWeight)
26
- gc.font_style(Magick::NormalStyle)
27
- gc.stroke('transparent')
28
- gc.fill('black')
29
- gc.gravity(Magick::SouthGravity)
30
- gc.text(-90,15, '"25%"')
31
- gc.text(-30,15, '"50%"')
32
- gc.text( 30,15, '"75%"')
33
- gc.text( 90,15, '"100%"')
34
-
35
- gc.draw(canvas)
36
- canvas.write('opacity.png')
37
- exit
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- # Demonstrate the Image#ordered_dither method
5
-
6
- img = Magick::Image.read('images/Flower_Hat.jpg').first
7
-
8
- img = img.ordered_dither
9
-
10
- img.write('ordered_dither.jpg')
11
- exit
data/doc/ex/path.rb DELETED
@@ -1,63 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
-
4
- imgl = Magick::ImageList.new
5
- imgl.new_image(390, 240, Magick::HatchFill.new('white','lightcyan2'))
6
-
7
- gc = Magick::Draw.new
8
-
9
- # Draw path
10
- gc.fill_opacity 0
11
- gc.stroke 'red'
12
- gc.stroke_width 3
13
- gc.path 'M20,120 C20,20 170,20 170,120 S320,220 320,120'
14
-
15
- # Annotate
16
- # Show end points
17
- gc.fill_opacity 0
18
- gc.stroke 'gray50'
19
- gc.stroke_width 1
20
- gc.circle 20,120, 23, 123
21
- gc.circle 170,120, 173, 123
22
- gc.circle 320,120, 323, 123
23
-
24
- # Show control points
25
- gc.fill_opacity 1
26
- gc.circle 20, 20, 23, 23
27
- gc.circle 170, 20, 173, 23
28
- gc.circle 320,220, 323, 223
29
-
30
- # Show connector lines
31
- gc.line 20,120, 20, 20
32
- gc.line 170, 20, 170,220
33
- gc.line 320,220, 320,120
34
-
35
- # Show auto control point
36
- gc.fill_opacity 0
37
- gc.stroke 'blue'
38
- gc.stroke_width 3
39
- gc.circle 170,220, 173,223
40
-
41
- # Add labels
42
- gc.font_weight Magick::NormalWeight
43
- gc.font_style Magick::NormalStyle
44
- gc.stroke 'none' # unset stroke color
45
- gc.fill 'black'
46
-
47
- # Add end point labels
48
- gc.text 30,125, "'20,120'"
49
- gc.text 180,125, "'170,120'"
50
- gc.text 330,125, "'320,120'"
51
-
52
- # Add control point labels
53
- gc.text 30, 25, "'20,20'"
54
- gc.text 180, 25, "'170,20'"
55
- gc.text 330,225, "'320,220'"
56
-
57
- # Add auto control point label
58
- gc.text 180,225, "'auto ctl point'"
59
-
60
- gc.draw imgl
61
-
62
- imgl.border!(1,1, 'lightcyan2')
63
- imgl.write 'path.gif'
data/doc/ex/pattern1.rb DELETED
@@ -1,25 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- gc = Magick::Draw.new
6
- gc.pattern('triangles', 0, 0, 16, 16) do
7
- gc.fill('darkblue')
8
- gc.rectangle(0,0, 16,16)
9
- gc.fill('yellow')
10
- gc.stroke('red')
11
- gc.polygon(0,0, 8,16, 16,0, 0,0)
12
- end
13
-
14
- gc.stroke('triangles')
15
- gc.stroke_width(16)
16
- gc.fill('none')
17
- gc.ellipse(150, 75, 130, 60, 0, 360)
18
-
19
- img = Magick::Image.new(300, 150, Magick::HatchFill.new('white','lightcyan2',8))
20
- gc.draw(img)
21
-
22
- img.border!(1,1, 'lightcyan2')
23
-
24
- img.write('pattern1.gif')
25
- exit
data/doc/ex/pattern2.rb DELETED
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
-
5
- hat = Magick::Image.read('images/Flower_Hat.jpg').first
6
- hat.resize!(0.25)
7
-
8
- # Construct a pattern using the hat image
9
- gc = Magick::Draw.new
10
- gc.pattern('hat', 0, 0, hat.columns, hat.rows) do
11
- gc.composite(0, 0, 0, 0, hat)
12
- end
13
-
14
- # Set the fill to the hat "pattern." Draw an ellipse
15
- gc.fill('hat')
16
- gc.ellipse(150, 75, 140, 70, 0, 360)
17
-
18
- # Create a canvas to draw on
19
- img = Magick::Image.new(300, 150, Magick::HatchFill.new('white','lightcyan2',8))
20
-
21
- # Draw the ellipse using the fill
22
- gc.draw(img)
23
-
24
- img.border!(1,1, 'lightcyan2')
25
- img.write('pattern2.gif')
26
- exit
data/doc/ex/polaroid.rb DELETED
@@ -1,27 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
- require 'rmagick'
3
- require 'date'
4
-
5
- # Demonstrate the Image#polaroid method
6
-
7
- img = Magick::Image.read('images/Flower_Hat.jpg').first
8
- img[:Caption] = "\nLosha\n" + Date.today.to_s
9
-
10
- begin
11
- picture = img.polaroid do
12
- self.font_weight = Magick::NormalWeight
13
- self.font_style = Magick::NormalStyle
14
- self.gravity = Magick::CenterGravity
15
- self.border_color = '#f0f0f8'
16
- end
17
-
18
- # Composite it on a white background so the result is opaque.
19
- background = Magick::Image.new(picture.columns, picture.rows)
20
- result = background.composite(picture, Magick::CenterGravity, Magick::OverCompositeOp)
21
-
22
- rescue NotImplementedError
23
- result = Magick::Image.read('images/notimplemented.gif').first
24
- result.resize!(img.columns, img.rows)
25
- end
26
-
27
- result.write('polaroid.jpg')