rmagick-windows 2.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (393) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +14 -0
  3. data/.gitignore +23 -0
  4. data/.hound.yml +2 -0
  5. data/.rspec +1 -0
  6. data/.rubocop.yml +340 -0
  7. data/.simplecov +27 -0
  8. data/.travis.yml +60 -0
  9. data/CHANGELOG.md +915 -0
  10. data/CODE_OF_CONDUCT.md +13 -0
  11. data/CONTRIBUTING.md +50 -0
  12. data/Doxyfile +1514 -0
  13. data/Gemfile +10 -0
  14. data/LICENSE +20 -0
  15. data/README.textile +257 -0
  16. data/Rakefile +188 -0
  17. data/before_install_linux.sh +32 -0
  18. data/before_install_osx.sh +2 -0
  19. data/deprecated/RMagick.rb +6 -0
  20. data/doc/.cvsignore +1 -0
  21. data/doc/comtasks.html +287 -0
  22. data/doc/constants.html +1581 -0
  23. data/doc/css/doc.css +299 -0
  24. data/doc/css/popup.css +34 -0
  25. data/doc/css/ref.css +67 -0
  26. data/doc/draw.html +3272 -0
  27. data/doc/ex/InitialCoords.rb +22 -0
  28. data/doc/ex/NewCoordSys.rb +30 -0
  29. data/doc/ex/OrigCoordSys.rb +16 -0
  30. data/doc/ex/PreserveAspectRatio.rb +204 -0
  31. data/doc/ex/RotateScale.rb +36 -0
  32. data/doc/ex/Skew.rb +38 -0
  33. data/doc/ex/Use01.rb +15 -0
  34. data/doc/ex/Use02.rb +20 -0
  35. data/doc/ex/Use03.rb +16 -0
  36. data/doc/ex/ViewBox.rb +31 -0
  37. data/doc/ex/adaptive_threshold.rb +9 -0
  38. data/doc/ex/add_noise.rb +16 -0
  39. data/doc/ex/affine.rb +48 -0
  40. data/doc/ex/affine_transform.rb +20 -0
  41. data/doc/ex/arc.rb +49 -0
  42. data/doc/ex/arcpath.rb +32 -0
  43. data/doc/ex/arcs01.rb +28 -0
  44. data/doc/ex/arcs02.rb +59 -0
  45. data/doc/ex/average.rb +15 -0
  46. data/doc/ex/axes.rb +64 -0
  47. data/doc/ex/baseline_shift01.rb +17 -0
  48. data/doc/ex/bilevel_channel.rb +8 -0
  49. data/doc/ex/blur_image.rb +12 -0
  50. data/doc/ex/border.rb +10 -0
  51. data/doc/ex/bounding_box.rb +42 -0
  52. data/doc/ex/cbezier1.rb +41 -0
  53. data/doc/ex/cbezier2.rb +41 -0
  54. data/doc/ex/cbezier3.rb +41 -0
  55. data/doc/ex/cbezier4.rb +42 -0
  56. data/doc/ex/cbezier5.rb +42 -0
  57. data/doc/ex/cbezier6.rb +53 -0
  58. data/doc/ex/channel.rb +25 -0
  59. data/doc/ex/charcoal.rb +12 -0
  60. data/doc/ex/chop.rb +29 -0
  61. data/doc/ex/circle.rb +33 -0
  62. data/doc/ex/circle01.rb +16 -0
  63. data/doc/ex/clip_path.rb +60 -0
  64. data/doc/ex/coalesce.rb +57 -0
  65. data/doc/ex/color_fill_to_border.rb +29 -0
  66. data/doc/ex/color_floodfill.rb +28 -0
  67. data/doc/ex/color_histogram.rb +47 -0
  68. data/doc/ex/color_reset.rb +11 -0
  69. data/doc/ex/colorize.rb +16 -0
  70. data/doc/ex/colors.rb +64 -0
  71. data/doc/ex/compose_mask.rb +22 -0
  72. data/doc/ex/composite.rb +133 -0
  73. data/doc/ex/composite_layers.rb +53 -0
  74. data/doc/ex/composite_tiled.rb +21 -0
  75. data/doc/ex/contrast.rb +36 -0
  76. data/doc/ex/crop.rb +31 -0
  77. data/doc/ex/crop_with_gravity.rb +42 -0
  78. data/doc/ex/cubic01.rb +43 -0
  79. data/doc/ex/cubic02.rb +91 -0
  80. data/doc/ex/cycle_colormap.rb +21 -0
  81. data/doc/ex/dissolve.rb +12 -0
  82. data/doc/ex/drawcomp.rb +42 -0
  83. data/doc/ex/drop_shadow.rb +60 -0
  84. data/doc/ex/edge.rb +11 -0
  85. data/doc/ex/ellipse.rb +45 -0
  86. data/doc/ex/ellipse01.rb +21 -0
  87. data/doc/ex/emboss.rb +11 -0
  88. data/doc/ex/enhance.rb +28 -0
  89. data/doc/ex/equalize.rb +11 -0
  90. data/doc/ex/evenodd.rb +42 -0
  91. data/doc/ex/fill_pattern.rb +23 -0
  92. data/doc/ex/flatten_images.rb +36 -0
  93. data/doc/ex/flip.rb +11 -0
  94. data/doc/ex/flop.rb +11 -0
  95. data/doc/ex/font_styles.rb +32 -0
  96. data/doc/ex/fonts.rb +20 -0
  97. data/doc/ex/frame.rb +12 -0
  98. data/doc/ex/gaussian_blur.rb +11 -0
  99. data/doc/ex/get_multiline_type_metrics.rb +41 -0
  100. data/doc/ex/get_pixels.rb +47 -0
  101. data/doc/ex/get_type_metrics.rb +141 -0
  102. data/doc/ex/gradientfill.rb +27 -0
  103. data/doc/ex/grav.rb +45 -0
  104. data/doc/ex/gravity.rb +80 -0
  105. data/doc/ex/group.rb +26 -0
  106. data/doc/ex/hatchfill.rb +27 -0
  107. data/doc/ex/image.rb +44 -0
  108. data/doc/ex/images/Apple.miff +0 -0
  109. data/doc/ex/images/Ballerina.jpg +0 -0
  110. data/doc/ex/images/Ballerina3.jpg +0 -0
  111. data/doc/ex/images/Button_0.gif +0 -0
  112. data/doc/ex/images/Button_1.gif +0 -0
  113. data/doc/ex/images/Button_2.gif +0 -0
  114. data/doc/ex/images/Button_3.gif +0 -0
  115. data/doc/ex/images/Button_4.gif +0 -0
  116. data/doc/ex/images/Button_5.gif +0 -0
  117. data/doc/ex/images/Button_6.gif +0 -0
  118. data/doc/ex/images/Button_7.gif +0 -0
  119. data/doc/ex/images/Button_8.gif +0 -0
  120. data/doc/ex/images/Button_9.gif +0 -0
  121. data/doc/ex/images/Button_A.gif +0 -0
  122. data/doc/ex/images/Button_B.gif +0 -0
  123. data/doc/ex/images/Button_C.gif +0 -0
  124. data/doc/ex/images/Button_D.gif +0 -0
  125. data/doc/ex/images/Button_E.gif +0 -0
  126. data/doc/ex/images/Button_F.gif +0 -0
  127. data/doc/ex/images/Button_G.gif +0 -0
  128. data/doc/ex/images/Button_H.gif +0 -0
  129. data/doc/ex/images/Button_I.gif +0 -0
  130. data/doc/ex/images/Button_J.gif +0 -0
  131. data/doc/ex/images/Button_K.gif +0 -0
  132. data/doc/ex/images/Button_L.gif +0 -0
  133. data/doc/ex/images/Button_M.gif +0 -0
  134. data/doc/ex/images/Button_N.gif +0 -0
  135. data/doc/ex/images/Button_O.gif +0 -0
  136. data/doc/ex/images/Button_P.gif +0 -0
  137. data/doc/ex/images/Button_Q.gif +0 -0
  138. data/doc/ex/images/Button_R.gif +0 -0
  139. data/doc/ex/images/Button_S.gif +0 -0
  140. data/doc/ex/images/Button_T.gif +0 -0
  141. data/doc/ex/images/Button_U.gif +0 -0
  142. data/doc/ex/images/Button_V.gif +0 -0
  143. data/doc/ex/images/Button_W.gif +0 -0
  144. data/doc/ex/images/Button_X.gif +0 -0
  145. data/doc/ex/images/Button_Y.gif +0 -0
  146. data/doc/ex/images/Button_Z.gif +0 -0
  147. data/doc/ex/images/Cheetah.jpg +0 -0
  148. data/doc/ex/images/Coffee.wmf +0 -0
  149. data/doc/ex/images/Flower_Hat.jpg +0 -0
  150. data/doc/ex/images/Gold_Statue.jpg +0 -0
  151. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  152. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  153. data/doc/ex/images/Leaf.miff +0 -0
  154. data/doc/ex/images/No.wmf +0 -0
  155. data/doc/ex/images/Polynesia.jpg +0 -0
  156. data/doc/ex/images/Red_Rocks.jpg +0 -0
  157. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  158. data/doc/ex/images/Shorts.jpg +0 -0
  159. data/doc/ex/images/Snake.wmf +0 -0
  160. data/doc/ex/images/Violin.jpg +0 -0
  161. data/doc/ex/images/Yellow_Rose.miff +0 -0
  162. data/doc/ex/images/big-duck.gif +0 -0
  163. data/doc/ex/images/duck.gif +0 -0
  164. data/doc/ex/images/duck0.gif +0 -0
  165. data/doc/ex/images/duck1.gif +0 -0
  166. data/doc/ex/images/duck10.gif +0 -0
  167. data/doc/ex/images/duck11.gif +0 -0
  168. data/doc/ex/images/duck12.gif +0 -0
  169. data/doc/ex/images/duck13.gif +0 -0
  170. data/doc/ex/images/duck14.gif +0 -0
  171. data/doc/ex/images/duck15.gif +0 -0
  172. data/doc/ex/images/duck2.gif +0 -0
  173. data/doc/ex/images/duck3.gif +0 -0
  174. data/doc/ex/images/duck4.gif +0 -0
  175. data/doc/ex/images/duck5.gif +0 -0
  176. data/doc/ex/images/duck6.gif +0 -0
  177. data/doc/ex/images/duck7.gif +0 -0
  178. data/doc/ex/images/duck8.gif +0 -0
  179. data/doc/ex/images/duck9.gif +0 -0
  180. data/doc/ex/images/graydient230x6.gif +0 -0
  181. data/doc/ex/images/image_with_profile.jpg +0 -0
  182. data/doc/ex/images/logo400x83.gif +0 -0
  183. data/doc/ex/images/model.miff +0 -0
  184. data/doc/ex/images/notimplemented.gif +0 -0
  185. data/doc/ex/images/smile.miff +0 -0
  186. data/doc/ex/images/spin.gif +0 -0
  187. data/doc/ex/implode.rb +34 -0
  188. data/doc/ex/level.rb +11 -0
  189. data/doc/ex/level_colors.rb +11 -0
  190. data/doc/ex/line.rb +41 -0
  191. data/doc/ex/line01.rb +21 -0
  192. data/doc/ex/mask.rb +35 -0
  193. data/doc/ex/matte_fill_to_border.rb +39 -0
  194. data/doc/ex/matte_floodfill.rb +32 -0
  195. data/doc/ex/matte_replace.rb +39 -0
  196. data/doc/ex/median_filter.rb +28 -0
  197. data/doc/ex/modulate.rb +11 -0
  198. data/doc/ex/mono.rb +23 -0
  199. data/doc/ex/morph.rb +25 -0
  200. data/doc/ex/mosaic.rb +35 -0
  201. data/doc/ex/motion_blur.rb +11 -0
  202. data/doc/ex/negate.rb +11 -0
  203. data/doc/ex/negate_channel.rb +9 -0
  204. data/doc/ex/nested_rvg.rb +21 -0
  205. data/doc/ex/nonzero.rb +42 -0
  206. data/doc/ex/normalize.rb +11 -0
  207. data/doc/ex/oil_paint.rb +11 -0
  208. data/doc/ex/opacity.rb +37 -0
  209. data/doc/ex/ordered_dither.rb +11 -0
  210. data/doc/ex/path.rb +63 -0
  211. data/doc/ex/pattern1.rb +25 -0
  212. data/doc/ex/pattern2.rb +26 -0
  213. data/doc/ex/polaroid.rb +27 -0
  214. data/doc/ex/polygon.rb +23 -0
  215. data/doc/ex/polygon01.rb +21 -0
  216. data/doc/ex/polyline.rb +22 -0
  217. data/doc/ex/polyline01.rb +21 -0
  218. data/doc/ex/posterize.rb +8 -0
  219. data/doc/ex/preview.rb +8 -0
  220. data/doc/ex/qbezierpath.rb +52 -0
  221. data/doc/ex/quad01.rb +34 -0
  222. data/doc/ex/quantize-m.rb +25 -0
  223. data/doc/ex/radial_blur.rb +9 -0
  224. data/doc/ex/raise.rb +8 -0
  225. data/doc/ex/random_threshold_channel.rb +13 -0
  226. data/doc/ex/rect01.rb +14 -0
  227. data/doc/ex/rect02.rb +20 -0
  228. data/doc/ex/rectangle.rb +34 -0
  229. data/doc/ex/reduce_noise.rb +28 -0
  230. data/doc/ex/remap.rb +11 -0
  231. data/doc/ex/remap_images.rb +19 -0
  232. data/doc/ex/resize_to_fill.rb +8 -0
  233. data/doc/ex/resize_to_fit.rb +8 -0
  234. data/doc/ex/roll.rb +9 -0
  235. data/doc/ex/rotate.rb +44 -0
  236. data/doc/ex/rotate_f.rb +14 -0
  237. data/doc/ex/roundrect.rb +33 -0
  238. data/doc/ex/rubyname.rb +30 -0
  239. data/doc/ex/rvg_clippath.rb +12 -0
  240. data/doc/ex/rvg_linecap.rb +42 -0
  241. data/doc/ex/rvg_linejoin.rb +40 -0
  242. data/doc/ex/rvg_opacity.rb +18 -0
  243. data/doc/ex/rvg_pattern.rb +26 -0
  244. data/doc/ex/rvg_stroke_dasharray.rb +11 -0
  245. data/doc/ex/segment.rb +11 -0
  246. data/doc/ex/sepiatone.rb +7 -0
  247. data/doc/ex/shade.rb +11 -0
  248. data/doc/ex/shadow.rb +30 -0
  249. data/doc/ex/shave.rb +15 -0
  250. data/doc/ex/shear.rb +10 -0
  251. data/doc/ex/sketch.rb +17 -0
  252. data/doc/ex/skewx.rb +51 -0
  253. data/doc/ex/skewy.rb +47 -0
  254. data/doc/ex/smile.rb +125 -0
  255. data/doc/ex/solarize.rb +11 -0
  256. data/doc/ex/sparse_color.rb +54 -0
  257. data/doc/ex/splice.rb +8 -0
  258. data/doc/ex/spread.rb +11 -0
  259. data/doc/ex/stegano.rb +55 -0
  260. data/doc/ex/stroke_dasharray.rb +42 -0
  261. data/doc/ex/stroke_fill.rb +10 -0
  262. data/doc/ex/stroke_linecap.rb +44 -0
  263. data/doc/ex/stroke_linejoin.rb +48 -0
  264. data/doc/ex/stroke_width.rb +49 -0
  265. data/doc/ex/swirl.rb +17 -0
  266. data/doc/ex/text.rb +37 -0
  267. data/doc/ex/text01.rb +16 -0
  268. data/doc/ex/text_align.rb +36 -0
  269. data/doc/ex/text_antialias.rb +37 -0
  270. data/doc/ex/text_styles.rb +19 -0
  271. data/doc/ex/text_undercolor.rb +28 -0
  272. data/doc/ex/texture_fill_to_border.rb +34 -0
  273. data/doc/ex/texture_floodfill.rb +32 -0
  274. data/doc/ex/texturefill.rb +24 -0
  275. data/doc/ex/threshold.rb +13 -0
  276. data/doc/ex/to_blob.rb +13 -0
  277. data/doc/ex/translate.rb +39 -0
  278. data/doc/ex/transparent.rb +38 -0
  279. data/doc/ex/transpose.rb +9 -0
  280. data/doc/ex/transverse.rb +9 -0
  281. data/doc/ex/tref01.rb +24 -0
  282. data/doc/ex/triangle01.rb +15 -0
  283. data/doc/ex/trim.rb +23 -0
  284. data/doc/ex/tspan01.rb +17 -0
  285. data/doc/ex/tspan02.rb +17 -0
  286. data/doc/ex/tspan03.rb +19 -0
  287. data/doc/ex/unsharp_mask.rb +28 -0
  288. data/doc/ex/viewex.rb +33 -0
  289. data/doc/ex/vignette.rb +12 -0
  290. data/doc/ex/watermark.rb +27 -0
  291. data/doc/ex/wave.rb +9 -0
  292. data/doc/ex/wet_floor.rb +58 -0
  293. data/doc/ex/writing_mode01.rb +26 -0
  294. data/doc/ex/writing_mode02.rb +26 -0
  295. data/doc/ilist.html +2056 -0
  296. data/doc/image1.html +4680 -0
  297. data/doc/image2.html +3665 -0
  298. data/doc/image3.html +4522 -0
  299. data/doc/imageattrs.html +1638 -0
  300. data/doc/imusage.html +514 -0
  301. data/doc/index.html +416 -0
  302. data/doc/info.html +1499 -0
  303. data/doc/magick.html +565 -0
  304. data/doc/optequiv.html +2435 -0
  305. data/doc/rvg.html +975 -0
  306. data/doc/rvgclip.html +248 -0
  307. data/doc/rvggroup.html +305 -0
  308. data/doc/rvgimage.html +289 -0
  309. data/doc/rvgpattern.html +475 -0
  310. data/doc/rvgshape.html +406 -0
  311. data/doc/rvgstyle.html +270 -0
  312. data/doc/rvgtext.html +465 -0
  313. data/doc/rvgtspan.html +238 -0
  314. data/doc/rvgtut.html +530 -0
  315. data/doc/rvguse.html +145 -0
  316. data/doc/rvgxform.html +294 -0
  317. data/doc/scripts/doc.js +22 -0
  318. data/doc/scripts/stripeTables.js +23 -0
  319. data/doc/struct.html +1339 -0
  320. data/doc/usage.html +1621 -0
  321. data/examples/constitute.rb +7 -0
  322. data/examples/crop_with_gravity.rb +42 -0
  323. data/examples/demo.rb +324 -0
  324. data/examples/describe.rb +43 -0
  325. data/examples/find_similar_region.rb +34 -0
  326. data/examples/histogram.rb +321 -0
  327. data/examples/identify.rb +185 -0
  328. data/examples/image_opacity.rb +29 -0
  329. data/examples/import_export.rb +31 -0
  330. data/examples/pattern_fill.rb +38 -0
  331. data/examples/rotating_text.rb +44 -0
  332. data/examples/spinner.rb +49 -0
  333. data/examples/thumbnail.rb +64 -0
  334. data/examples/vignette.rb +78 -0
  335. data/ext/RMagick/extconf.rb +548 -0
  336. data/ext/RMagick/rmagick.c +401 -0
  337. data/ext/RMagick/rmagick.h +1287 -0
  338. data/ext/RMagick/rmdraw.c +2022 -0
  339. data/ext/RMagick/rmenum.c +1235 -0
  340. data/ext/RMagick/rmfill.c +720 -0
  341. data/ext/RMagick/rmilist.c +1270 -0
  342. data/ext/RMagick/rmimage.c +15427 -0
  343. data/ext/RMagick/rminfo.c +2590 -0
  344. data/ext/RMagick/rmmain.c +1741 -0
  345. data/ext/RMagick/rmmontage.c +519 -0
  346. data/ext/RMagick/rmpixel.c +1114 -0
  347. data/ext/RMagick/rmstruct.c +1124 -0
  348. data/ext/RMagick/rmutil.c +1754 -0
  349. data/lib/rmagick.rb +1 -0
  350. data/lib/rmagick/version.rb +6 -0
  351. data/lib/rmagick_internal.rb +1947 -0
  352. data/lib/rvg/clippath.rb +45 -0
  353. data/lib/rvg/container.rb +122 -0
  354. data/lib/rvg/deep_equal.rb +52 -0
  355. data/lib/rvg/describable.rb +47 -0
  356. data/lib/rvg/embellishable.rb +391 -0
  357. data/lib/rvg/misc.rb +723 -0
  358. data/lib/rvg/paint.rb +50 -0
  359. data/lib/rvg/pathdata.rb +126 -0
  360. data/lib/rvg/rvg.rb +283 -0
  361. data/lib/rvg/stretchable.rb +165 -0
  362. data/lib/rvg/stylable.rb +116 -0
  363. data/lib/rvg/text.rb +172 -0
  364. data/lib/rvg/transformable.rb +126 -0
  365. data/lib/rvg/units.rb +63 -0
  366. data/rmagick.gemspec +46 -0
  367. data/spec/rmagick/ImageList1_spec.rb +24 -0
  368. data/spec/rmagick/draw_spec.rb +156 -0
  369. data/spec/rmagick/image/blue_shift_spec.rb +16 -0
  370. data/spec/rmagick/image/composite_spec.rb +140 -0
  371. data/spec/rmagick/image/constitute_spec.rb +15 -0
  372. data/spec/rmagick/image/dispatch_spec.rb +18 -0
  373. data/spec/rmagick/image/from_blob_spec.rb +14 -0
  374. data/spec/rmagick/image/ping_spec.rb +14 -0
  375. data/spec/rmagick/image/properties_spec.rb +29 -0
  376. data/spec/spec_helper.rb +4 -0
  377. data/test/Image1.rb +565 -0
  378. data/test/Image2.rb +1304 -0
  379. data/test/Image3.rb +1030 -0
  380. data/test/ImageList1.rb +806 -0
  381. data/test/ImageList2.rb +385 -0
  382. data/test/Image_attributes.rb +697 -0
  383. data/test/Import_Export.rb +121 -0
  384. data/test/Info.rb +345 -0
  385. data/test/Magick.rb +321 -0
  386. data/test/Pixel.rb +116 -0
  387. data/test/Preview.rb +57 -0
  388. data/test/cmyk.icm +0 -0
  389. data/test/srgb.icm +0 -0
  390. data/test/test_all_basic.rb +38 -0
  391. data/test/tmpnam_test.rb +50 -0
  392. data/wercker.yml +10 -0
  393. metadata +509 -0
Binary file
data/doc/ex/implode.rb ADDED
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ require 'rmagick'
4
+
5
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
6
+
7
+ legend = Magick::Draw.new
8
+ legend.stroke = 'transparent'
9
+ legend.fill = 'white'
10
+ legend.gravity = Magick::SouthGravity
11
+
12
+ frames = Magick::ImageList.new
13
+
14
+ implosion = 0.25
15
+ 8.times do
16
+ frames << img.implode(implosion)
17
+ legend.annotate(frames, 0,0,10,20, sprintf('% 4.2f', implosion))
18
+ frames.matte = false
19
+ implosion -= 0.10
20
+ end
21
+
22
+ 7.times do
23
+ implosion += 0.10
24
+ frames << img.implode(implosion)
25
+ legend.annotate(frames, 0,0,10,20, sprintf('% 4.2f', implosion))
26
+ frames.matte = false
27
+ end
28
+
29
+ frames.delay = 10
30
+ frames.iterations = 0
31
+ puts 'Producing animation...'
32
+
33
+ frames.write('implode.gif')
34
+ exit
data/doc/ex/level.rb ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby -w
2
+ require 'rmagick'
3
+
4
+ # Demonstrate the Image#level method
5
+
6
+ before = Magick::Image.read('images/Flower_Hat.jpg').first
7
+
8
+ # Brighten up the mid-tones a bit.
9
+ after = before.level(0, Magick::QuantumRange, 1.50)
10
+ after.write('level.jpg')
11
+ exit
@@ -0,0 +1,11 @@
1
+ require 'rmagick'
2
+
3
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
4
+ begin
5
+ img = img.level_colors('green', 'orange', true)
6
+ img.alpha(Magick::DeactivateAlphaChannel)
7
+ rescue NotImplementedError
8
+ not_imp = Magick::Image.read('images/notimplemented.gif').first
9
+ img = not_imp.resize(img.columns, img.rows)
10
+ end
11
+ img.write('level_colors.jpg')
data/doc/ex/line.rb ADDED
@@ -0,0 +1,41 @@
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 ADDED
@@ -0,0 +1,21 @@
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 ADDED
@@ -0,0 +1,35 @@
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')
@@ -0,0 +1,39 @@
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
@@ -0,0 +1,32 @@
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
@@ -0,0 +1,39 @@
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
@@ -0,0 +1,28 @@
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
@@ -0,0 +1,11 @@
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 ADDED
@@ -0,0 +1,23 @@
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 ADDED
@@ -0,0 +1,25 @@
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 ADDED
@@ -0,0 +1,35 @@
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
@@ -0,0 +1,11 @@
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 ADDED
@@ -0,0 +1,11 @@
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
@@ -0,0 +1,9 @@
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