rdp-rmagick 0.0.0

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 (388) hide show
  1. data/ChangeLog +769 -0
  2. data/Doxyfile +1514 -0
  3. data/README-Mac-OSX.txt +1 -0
  4. data/README.md +231 -0
  5. data/build_tarball.rake +215 -0
  6. data/doc/comtasks.html +287 -0
  7. data/doc/constants.html +1581 -0
  8. data/doc/css/doc.css +299 -0
  9. data/doc/css/popup.css +34 -0
  10. data/doc/css/ref.css +67 -0
  11. data/doc/draw.html +3269 -0
  12. data/doc/ex/InitialCoords.rb +23 -0
  13. data/doc/ex/NewCoordSys.rb +32 -0
  14. data/doc/ex/OrigCoordSys.rb +18 -0
  15. data/doc/ex/PreserveAspectRatio.rb +205 -0
  16. data/doc/ex/RotateScale.rb +37 -0
  17. data/doc/ex/Skew.rb +38 -0
  18. data/doc/ex/Use01.rb +16 -0
  19. data/doc/ex/Use02.rb +21 -0
  20. data/doc/ex/Use03.rb +16 -0
  21. data/doc/ex/ViewBox.rb +33 -0
  22. data/doc/ex/adaptive_threshold.rb +10 -0
  23. data/doc/ex/add_noise.rb +17 -0
  24. data/doc/ex/affine.rb +48 -0
  25. data/doc/ex/affine_transform.rb +20 -0
  26. data/doc/ex/arc.rb +49 -0
  27. data/doc/ex/arcpath.rb +33 -0
  28. data/doc/ex/arcs01.rb +28 -0
  29. data/doc/ex/arcs02.rb +61 -0
  30. data/doc/ex/average.rb +15 -0
  31. data/doc/ex/axes.rb +64 -0
  32. data/doc/ex/baseline_shift01.rb +18 -0
  33. data/doc/ex/bilevel_channel.rb +9 -0
  34. data/doc/ex/blur_image.rb +12 -0
  35. data/doc/ex/border.rb +10 -0
  36. data/doc/ex/bounding_box.rb +44 -0
  37. data/doc/ex/cbezier1.rb +42 -0
  38. data/doc/ex/cbezier2.rb +42 -0
  39. data/doc/ex/cbezier3.rb +42 -0
  40. data/doc/ex/cbezier4.rb +43 -0
  41. data/doc/ex/cbezier5.rb +43 -0
  42. data/doc/ex/cbezier6.rb +53 -0
  43. data/doc/ex/channel.rb +26 -0
  44. data/doc/ex/charcoal.rb +12 -0
  45. data/doc/ex/chop.rb +29 -0
  46. data/doc/ex/circle.rb +33 -0
  47. data/doc/ex/circle01.rb +17 -0
  48. data/doc/ex/clip_path.rb +60 -0
  49. data/doc/ex/coalesce.rb +60 -0
  50. data/doc/ex/color_fill_to_border.rb +29 -0
  51. data/doc/ex/color_floodfill.rb +28 -0
  52. data/doc/ex/color_histogram.rb +48 -0
  53. data/doc/ex/color_reset.rb +11 -0
  54. data/doc/ex/colorize.rb +16 -0
  55. data/doc/ex/colors.rb +64 -0
  56. data/doc/ex/compose_mask.rb +23 -0
  57. data/doc/ex/composite.rb +135 -0
  58. data/doc/ex/composite_layers.rb +53 -0
  59. data/doc/ex/composite_tiled.rb +23 -0
  60. data/doc/ex/contrast.rb +36 -0
  61. data/doc/ex/crop.rb +31 -0
  62. data/doc/ex/crop_with_gravity.rb +46 -0
  63. data/doc/ex/cubic01.rb +45 -0
  64. data/doc/ex/cubic02.rb +94 -0
  65. data/doc/ex/cycle_colormap.rb +21 -0
  66. data/doc/ex/dissolve.rb +13 -0
  67. data/doc/ex/drawcomp.rb +42 -0
  68. data/doc/ex/drop_shadow.rb +60 -0
  69. data/doc/ex/edge.rb +11 -0
  70. data/doc/ex/ellipse.rb +45 -0
  71. data/doc/ex/ellipse01.rb +22 -0
  72. data/doc/ex/emboss.rb +11 -0
  73. data/doc/ex/enhance.rb +28 -0
  74. data/doc/ex/equalize.rb +11 -0
  75. data/doc/ex/evenodd.rb +43 -0
  76. data/doc/ex/fill_pattern.rb +26 -0
  77. data/doc/ex/flatten_images.rb +36 -0
  78. data/doc/ex/flip.rb +11 -0
  79. data/doc/ex/flop.rb +11 -0
  80. data/doc/ex/font_styles.rb +34 -0
  81. data/doc/ex/fonts.rb +20 -0
  82. data/doc/ex/frame.rb +12 -0
  83. data/doc/ex/gaussian_blur.rb +11 -0
  84. data/doc/ex/get_multiline_type_metrics.rb +42 -0
  85. data/doc/ex/get_pixels.rb +48 -0
  86. data/doc/ex/get_type_metrics.rb +146 -0
  87. data/doc/ex/gradientfill.rb +27 -0
  88. data/doc/ex/grav.rb +46 -0
  89. data/doc/ex/gravity.rb +79 -0
  90. data/doc/ex/group.rb +26 -0
  91. data/doc/ex/hatchfill.rb +27 -0
  92. data/doc/ex/image.rb +46 -0
  93. data/doc/ex/images/Apple.miff +0 -0
  94. data/doc/ex/images/Ballerina.jpg +0 -0
  95. data/doc/ex/images/Ballerina3.jpg +0 -0
  96. data/doc/ex/images/Button_0.gif +0 -0
  97. data/doc/ex/images/Button_1.gif +0 -0
  98. data/doc/ex/images/Button_2.gif +0 -0
  99. data/doc/ex/images/Button_3.gif +0 -0
  100. data/doc/ex/images/Button_4.gif +0 -0
  101. data/doc/ex/images/Button_5.gif +0 -0
  102. data/doc/ex/images/Button_6.gif +0 -0
  103. data/doc/ex/images/Button_7.gif +0 -0
  104. data/doc/ex/images/Button_8.gif +0 -0
  105. data/doc/ex/images/Button_9.gif +0 -0
  106. data/doc/ex/images/Button_A.gif +0 -0
  107. data/doc/ex/images/Button_B.gif +0 -0
  108. data/doc/ex/images/Button_C.gif +0 -0
  109. data/doc/ex/images/Button_D.gif +0 -0
  110. data/doc/ex/images/Button_E.gif +0 -0
  111. data/doc/ex/images/Button_F.gif +0 -0
  112. data/doc/ex/images/Button_G.gif +0 -0
  113. data/doc/ex/images/Button_H.gif +0 -0
  114. data/doc/ex/images/Button_I.gif +0 -0
  115. data/doc/ex/images/Button_J.gif +0 -0
  116. data/doc/ex/images/Button_K.gif +0 -0
  117. data/doc/ex/images/Button_L.gif +0 -0
  118. data/doc/ex/images/Button_M.gif +0 -0
  119. data/doc/ex/images/Button_N.gif +0 -0
  120. data/doc/ex/images/Button_O.gif +0 -0
  121. data/doc/ex/images/Button_P.gif +0 -0
  122. data/doc/ex/images/Button_Q.gif +0 -0
  123. data/doc/ex/images/Button_R.gif +0 -0
  124. data/doc/ex/images/Button_S.gif +0 -0
  125. data/doc/ex/images/Button_T.gif +0 -0
  126. data/doc/ex/images/Button_U.gif +0 -0
  127. data/doc/ex/images/Button_V.gif +0 -0
  128. data/doc/ex/images/Button_W.gif +0 -0
  129. data/doc/ex/images/Button_X.gif +0 -0
  130. data/doc/ex/images/Button_Y.gif +0 -0
  131. data/doc/ex/images/Button_Z.gif +0 -0
  132. data/doc/ex/images/Cheetah.jpg +0 -0
  133. data/doc/ex/images/Coffee.wmf +0 -0
  134. data/doc/ex/images/Flower_Hat.jpg +0 -0
  135. data/doc/ex/images/Gold_Statue.jpg +0 -0
  136. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  137. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  138. data/doc/ex/images/Leaf.miff +0 -0
  139. data/doc/ex/images/No.wmf +0 -0
  140. data/doc/ex/images/Polynesia.jpg +0 -0
  141. data/doc/ex/images/Red_Rocks.jpg +0 -0
  142. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  143. data/doc/ex/images/Shorts.jpg +0 -0
  144. data/doc/ex/images/Snake.wmf +0 -0
  145. data/doc/ex/images/Violin.jpg +0 -0
  146. data/doc/ex/images/Yellow_Rose.miff +0 -0
  147. data/doc/ex/images/big-duck.gif +0 -0
  148. data/doc/ex/images/duck.gif +0 -0
  149. data/doc/ex/images/duck0.gif +0 -0
  150. data/doc/ex/images/duck1.gif +0 -0
  151. data/doc/ex/images/duck10.gif +0 -0
  152. data/doc/ex/images/duck11.gif +0 -0
  153. data/doc/ex/images/duck12.gif +0 -0
  154. data/doc/ex/images/duck13.gif +0 -0
  155. data/doc/ex/images/duck14.gif +0 -0
  156. data/doc/ex/images/duck15.gif +0 -0
  157. data/doc/ex/images/duck2.gif +0 -0
  158. data/doc/ex/images/duck3.gif +0 -0
  159. data/doc/ex/images/duck4.gif +0 -0
  160. data/doc/ex/images/duck5.gif +0 -0
  161. data/doc/ex/images/duck6.gif +0 -0
  162. data/doc/ex/images/duck7.gif +0 -0
  163. data/doc/ex/images/duck8.gif +0 -0
  164. data/doc/ex/images/duck9.gif +0 -0
  165. data/doc/ex/images/graydient230x6.gif +0 -0
  166. data/doc/ex/images/logo400x83.gif +0 -0
  167. data/doc/ex/images/model.miff +0 -0
  168. data/doc/ex/images/notimplemented.gif +0 -0
  169. data/doc/ex/images/smile.miff +0 -0
  170. data/doc/ex/images/spin.gif +0 -0
  171. data/doc/ex/implode.rb +34 -0
  172. data/doc/ex/level.rb +11 -0
  173. data/doc/ex/level_colors.rb +11 -0
  174. data/doc/ex/line.rb +42 -0
  175. data/doc/ex/line01.rb +23 -0
  176. data/doc/ex/mask.rb +36 -0
  177. data/doc/ex/matte_fill_to_border.rb +40 -0
  178. data/doc/ex/matte_floodfill.rb +33 -0
  179. data/doc/ex/matte_replace.rb +40 -0
  180. data/doc/ex/median_filter.rb +28 -0
  181. data/doc/ex/modulate.rb +11 -0
  182. data/doc/ex/mono.rb +23 -0
  183. data/doc/ex/morph.rb +26 -0
  184. data/doc/ex/mosaic.rb +35 -0
  185. data/doc/ex/motion_blur.rb +11 -0
  186. data/doc/ex/negate.rb +11 -0
  187. data/doc/ex/negate_channel.rb +9 -0
  188. data/doc/ex/nested_rvg.rb +21 -0
  189. data/doc/ex/nonzero.rb +43 -0
  190. data/doc/ex/normalize.rb +11 -0
  191. data/doc/ex/oil_paint.rb +11 -0
  192. data/doc/ex/opacity.rb +37 -0
  193. data/doc/ex/ordered_dither.rb +11 -0
  194. data/doc/ex/path.rb +64 -0
  195. data/doc/ex/pattern1.rb +25 -0
  196. data/doc/ex/pattern2.rb +26 -0
  197. data/doc/ex/polaroid.rb +28 -0
  198. data/doc/ex/polygon.rb +24 -0
  199. data/doc/ex/polygon01.rb +23 -0
  200. data/doc/ex/polyline.rb +23 -0
  201. data/doc/ex/polyline01.rb +23 -0
  202. data/doc/ex/posterize.rb +8 -0
  203. data/doc/ex/preview.rb +9 -0
  204. data/doc/ex/qbezierpath.rb +52 -0
  205. data/doc/ex/quad01.rb +36 -0
  206. data/doc/ex/quantize-m.rb +25 -0
  207. data/doc/ex/radial_blur.rb +9 -0
  208. data/doc/ex/raise.rb +8 -0
  209. data/doc/ex/random_threshold_channel.rb +13 -0
  210. data/doc/ex/rect01.rb +15 -0
  211. data/doc/ex/rect02.rb +22 -0
  212. data/doc/ex/rectangle.rb +35 -0
  213. data/doc/ex/reduce_noise.rb +28 -0
  214. data/doc/ex/remap.rb +12 -0
  215. data/doc/ex/remap_images.rb +21 -0
  216. data/doc/ex/resize_to_fill.rb +10 -0
  217. data/doc/ex/resize_to_fit.rb +10 -0
  218. data/doc/ex/roll.rb +9 -0
  219. data/doc/ex/rotate.rb +45 -0
  220. data/doc/ex/rotate_f.rb +14 -0
  221. data/doc/ex/roundrect.rb +34 -0
  222. data/doc/ex/rubyname.rb +30 -0
  223. data/doc/ex/rvg_clippath.rb +14 -0
  224. data/doc/ex/rvg_linecap.rb +43 -0
  225. data/doc/ex/rvg_linejoin.rb +41 -0
  226. data/doc/ex/rvg_opacity.rb +19 -0
  227. data/doc/ex/rvg_pattern.rb +26 -0
  228. data/doc/ex/rvg_stroke_dasharray.rb +12 -0
  229. data/doc/ex/segment.rb +11 -0
  230. data/doc/ex/sepiatone.rb +8 -0
  231. data/doc/ex/shade.rb +11 -0
  232. data/doc/ex/shadow.rb +31 -0
  233. data/doc/ex/shave.rb +15 -0
  234. data/doc/ex/shear.rb +10 -0
  235. data/doc/ex/sketch.rb +18 -0
  236. data/doc/ex/skewx.rb +52 -0
  237. data/doc/ex/skewy.rb +47 -0
  238. data/doc/ex/smile.rb +125 -0
  239. data/doc/ex/solarize.rb +11 -0
  240. data/doc/ex/sparse_color.rb +55 -0
  241. data/doc/ex/splice.rb +9 -0
  242. data/doc/ex/spread.rb +11 -0
  243. data/doc/ex/stegano.rb +55 -0
  244. data/doc/ex/stroke_dasharray.rb +43 -0
  245. data/doc/ex/stroke_fill.rb +11 -0
  246. data/doc/ex/stroke_linecap.rb +44 -0
  247. data/doc/ex/stroke_linejoin.rb +48 -0
  248. data/doc/ex/stroke_width.rb +49 -0
  249. data/doc/ex/swirl.rb +17 -0
  250. data/doc/ex/text.rb +37 -0
  251. data/doc/ex/text01.rb +17 -0
  252. data/doc/ex/text_align.rb +36 -0
  253. data/doc/ex/text_antialias.rb +38 -0
  254. data/doc/ex/text_styles.rb +21 -0
  255. data/doc/ex/text_undercolor.rb +28 -0
  256. data/doc/ex/texture_fill_to_border.rb +34 -0
  257. data/doc/ex/texture_floodfill.rb +32 -0
  258. data/doc/ex/texturefill.rb +25 -0
  259. data/doc/ex/threshold.rb +13 -0
  260. data/doc/ex/to_blob.rb +14 -0
  261. data/doc/ex/translate.rb +39 -0
  262. data/doc/ex/transparent.rb +38 -0
  263. data/doc/ex/transpose.rb +9 -0
  264. data/doc/ex/transverse.rb +9 -0
  265. data/doc/ex/tref01.rb +25 -0
  266. data/doc/ex/triangle01.rb +16 -0
  267. data/doc/ex/trim.rb +24 -0
  268. data/doc/ex/tspan01.rb +18 -0
  269. data/doc/ex/tspan02.rb +19 -0
  270. data/doc/ex/tspan03.rb +21 -0
  271. data/doc/ex/unsharp_mask.rb +28 -0
  272. data/doc/ex/viewex.rb +35 -0
  273. data/doc/ex/vignette.rb +12 -0
  274. data/doc/ex/watermark.rb +28 -0
  275. data/doc/ex/wave.rb +9 -0
  276. data/doc/ex/wet_floor.rb +59 -0
  277. data/doc/ex/writing_mode01.rb +27 -0
  278. data/doc/ex/writing_mode02.rb +26 -0
  279. data/doc/ilist.html +2056 -0
  280. data/doc/image1.html +4680 -0
  281. data/doc/image2.html +3665 -0
  282. data/doc/image3.html +4522 -0
  283. data/doc/imageattrs.html +1638 -0
  284. data/doc/imusage.html +514 -0
  285. data/doc/index.html +416 -0
  286. data/doc/info.html +1499 -0
  287. data/doc/magick.html +565 -0
  288. data/doc/optequiv.html +2435 -0
  289. data/doc/rvg.html +975 -0
  290. data/doc/rvgclip.html +248 -0
  291. data/doc/rvggroup.html +305 -0
  292. data/doc/rvgimage.html +289 -0
  293. data/doc/rvgpattern.html +475 -0
  294. data/doc/rvgshape.html +406 -0
  295. data/doc/rvgstyle.html +270 -0
  296. data/doc/rvgtext.html +465 -0
  297. data/doc/rvgtspan.html +238 -0
  298. data/doc/rvgtut.html +530 -0
  299. data/doc/rvguse.html +145 -0
  300. data/doc/rvgxform.html +294 -0
  301. data/doc/scripts/doc.js +22 -0
  302. data/doc/scripts/stripeTables.js +23 -0
  303. data/doc/struct.html +1339 -0
  304. data/doc/usage.html +1621 -0
  305. data/examples/constitute.rb +7 -0
  306. data/examples/crop_with_gravity.rb +46 -0
  307. data/examples/demo.rb +324 -0
  308. data/examples/describe.rb +44 -0
  309. data/examples/find_similar_region.rb +34 -0
  310. data/examples/histogram.rb +325 -0
  311. data/examples/identify.rb +187 -0
  312. data/examples/image_opacity.rb +29 -0
  313. data/examples/import_export.rb +31 -0
  314. data/examples/pattern_fill.rb +38 -0
  315. data/examples/rotating_text.rb +45 -0
  316. data/examples/spinner.rb +50 -0
  317. data/examples/thumbnail.rb +65 -0
  318. data/examples/vignette.rb +79 -0
  319. data/ext/RMagick/Makefile +180 -0
  320. data/ext/RMagick/RMagick2.so +0 -0
  321. data/ext/RMagick/extconf.h +119 -0
  322. data/ext/RMagick/extconf.rb +406 -0
  323. data/ext/RMagick/mkmf.log +3022 -0
  324. data/ext/RMagick/rmagick.c +394 -0
  325. data/ext/RMagick/rmagick.h +1307 -0
  326. data/ext/RMagick/rmagick.o +0 -0
  327. data/ext/RMagick/rmdraw.c +1991 -0
  328. data/ext/RMagick/rmdraw.o +0 -0
  329. data/ext/RMagick/rmenum.c +1224 -0
  330. data/ext/RMagick/rmenum.o +0 -0
  331. data/ext/RMagick/rmfill.c +717 -0
  332. data/ext/RMagick/rmfill.o +0 -0
  333. data/ext/RMagick/rmilist.c +1217 -0
  334. data/ext/RMagick/rmilist.o +0 -0
  335. data/ext/RMagick/rmimage.c +15099 -0
  336. data/ext/RMagick/rmimage.o +0 -0
  337. data/ext/RMagick/rminfo.c +2567 -0
  338. data/ext/RMagick/rminfo.o +0 -0
  339. data/ext/RMagick/rmmain.c +1705 -0
  340. data/ext/RMagick/rmmain.o +0 -0
  341. data/ext/RMagick/rmmontage.c +511 -0
  342. data/ext/RMagick/rmmontage.o +0 -0
  343. data/ext/RMagick/rmpixel.c +1103 -0
  344. data/ext/RMagick/rmpixel.o +0 -0
  345. data/ext/RMagick/rmstruct.c +1047 -0
  346. data/ext/RMagick/rmstruct.o +0 -0
  347. data/ext/RMagick/rmutil.c +1730 -0
  348. data/ext/RMagick/rmutil.o +0 -0
  349. data/lib/RMagick.rb +1962 -0
  350. data/lib/rvg/clippath.rb +48 -0
  351. data/lib/rvg/container.rb +131 -0
  352. data/lib/rvg/deep_equal.rb +56 -0
  353. data/lib/rvg/describable.rb +53 -0
  354. data/lib/rvg/embellishable.rb +417 -0
  355. data/lib/rvg/misc.rb +740 -0
  356. data/lib/rvg/paint.rb +55 -0
  357. data/lib/rvg/pathdata.rb +131 -0
  358. data/lib/rvg/rvg.rb +283 -0
  359. data/lib/rvg/stretchable.rb +168 -0
  360. data/lib/rvg/stylable.rb +124 -0
  361. data/lib/rvg/text.rb +187 -0
  362. data/lib/rvg/to_c.rb +103 -0
  363. data/lib/rvg/transformable.rb +133 -0
  364. data/lib/rvg/units.rb +66 -0
  365. data/metaconfig +7 -0
  366. data/post-clean.rb +12 -0
  367. data/post-install.rb +50 -0
  368. data/post-setup.rb +254 -0
  369. data/rmagick.gemspec +20 -0
  370. data/setup.rb +1585 -0
  371. data/test/Draw.rb +121 -0
  372. data/test/Image1.rb +762 -0
  373. data/test/Image2.rb +1308 -0
  374. data/test/Image3.rb +1001 -0
  375. data/test/ImageList1.rb +808 -0
  376. data/test/ImageList2.rb +389 -0
  377. data/test/Image_attributes.rb +682 -0
  378. data/test/Import_Export.rb +116 -0
  379. data/test/Info.rb +349 -0
  380. data/test/Magick.rb +364 -0
  381. data/test/Pixel.rb +120 -0
  382. data/test/Preview.rb +62 -0
  383. data/test/all_basic.rb +39 -0
  384. data/test/cmyk.icm +0 -0
  385. data/test/srgb.icm +0 -0
  386. data/test/test.0 +0 -0
  387. data/uninstall.rb +74 -0
  388. metadata +455 -0
@@ -0,0 +1,23 @@
1
+ require 'RMagick'
2
+
3
+ # Create a transparent image to tile over the background image.
4
+ wm = Magick::Image.read("xc:none") { self.size = "100x50" }.first
5
+
6
+ # Draw "RMagick" in semi-transparent text on the transparent image.
7
+ gc = Magick::Draw.new
8
+ gc.fill '#ffffff7f'
9
+ gc.font_weight Magick::BoldWeight
10
+ gc.font_size 18
11
+ gc.rotate 15
12
+ gc.gravity Magick::CenterGravity
13
+ gc.text 0, 0, "RMagick"
14
+ gc.draw wm
15
+
16
+ # Read the background image.
17
+ img = Magick::Image.read("images/Flower_Hat.jpg").first
18
+
19
+ # Composite the tile image over the background image.
20
+ img.composite_tiled! wm
21
+ img.write "composite_tiled.jpg"
22
+
23
+
@@ -0,0 +1,36 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ # Demonstrate the Image#contrast method
5
+
6
+ img = Magick::ImageList.new('images/Flower_Hat.jpg')
7
+ img.resize!(0.5)
8
+
9
+ # Prepare to label each image with a number from 1 to 4
10
+ legend = Magick::Draw.new
11
+ legend.stroke = 'transparent'
12
+ legend.pointsize = 12
13
+ legend.gravity = Magick::SouthEastGravity
14
+
15
+ # Add 3 images, each one having slightly less contrast
16
+ f = 1
17
+ 3.times {
18
+ img << img.contrast
19
+
20
+ # Annotate the previous image
21
+ legend.annotate(img[f-1], 0,0,7,10, f.to_s)
22
+ f += 1
23
+ }
24
+
25
+ # Annotate the last image
26
+ legend.annotate(img, 0,0,7,10, f.to_s)
27
+
28
+ # Montage into a single image
29
+ imgs = img.montage {
30
+ self.geometry = Magick::Geometry.new(img.columns, img.rows)
31
+ self.tile = "2x2"
32
+ }
33
+
34
+ imgs.write('contrast.jpg')
35
+ #imgs.display
36
+ exit
@@ -0,0 +1,31 @@
1
+ #!/usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ # Demonstrate the Image#crop method
5
+
6
+ img = Magick::Image.read('images/Flower_Hat.jpg')[0]
7
+
8
+ # Crop the specified rectangle out of the img.
9
+ chopped = img.crop(23, 81, 107, 139)
10
+
11
+ # Go back to the original and highlight the area
12
+ # corresponding to the retained rectangle.
13
+ rect = Magick::Draw.new
14
+ rect.stroke('transparent')
15
+ rect.fill('white')
16
+ rect.fill_opacity(0.25)
17
+ rect.rectangle(23, 81, 107+23, 139+81)
18
+ rect.draw(img)
19
+
20
+ img.write('crop_before.png')
21
+
22
+ # Create a image to use as a background for
23
+ # the "after" image.
24
+ bg = Magick::Image.new(img.columns, img.rows) {self.background_color="none"}
25
+
26
+ # Composite the the "after" (chopped) image on the background
27
+ bg = bg.composite(chopped, 23, 81, Magick::OverCompositeOp)
28
+
29
+ bg.write('crop_after.png')
30
+
31
+ exit
@@ -0,0 +1,46 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ #=======================================================#
4
+ # Thanks to Robert Wagner for the idea of allowing a #
5
+ # GravityType instead of the x- and y-offset arguments! #
6
+ #=======================================================#
7
+
8
+ # Demo the use of the GravityType argument to Image#crop.
9
+
10
+ require 'RMagick'
11
+ include Magick
12
+
13
+ shorts = Image.read('images/Shorts.jpg').first
14
+
15
+ regwidth = shorts.columns/2
16
+ regheight = shorts.rows/2
17
+
18
+ mask = Image.new(regwidth, regheight) { self.background_color = 'white'}
19
+ mask.opacity = 0.50 * TransparentOpacity
20
+
21
+ black = Image.new(shorts.columns, shorts.rows) {self.background_color = 'black'}
22
+ pairs = ImageList.new
23
+
24
+ [NorthWestGravity, NorthGravity, NorthEastGravity,
25
+ WestGravity, CenterGravity, EastGravity,
26
+ SouthWestGravity, SouthGravity, SouthEastGravity].each do |gravity|
27
+ pattern = shorts.composite(mask, gravity, OverCompositeOp)
28
+ cropped = shorts.crop(gravity, regwidth, regheight)
29
+ result = black.composite(cropped, gravity, OverCompositeOp)
30
+ result.border_color = "white"
31
+ pairs << pattern
32
+ pairs << result
33
+ end
34
+
35
+ # Montage into a single image
36
+ montage = pairs.montage {
37
+ self.geometry = "#{pairs.columns}x#{pairs.rows}+0+0"
38
+ self.tile = "6x3"
39
+ self.border_width = 1
40
+ }
41
+ montage.write('crop_with_gravity.miff')
42
+ #montage.display
43
+
44
+
45
+
46
+
@@ -0,0 +1,45 @@
1
+ require 'rvg/rvg'
2
+
3
+ Magick::RVG.dpi = 90
4
+
5
+ Border = {:fill=>'none', :stroke=>'blue', :stroke_width=>1}
6
+ Connect = {:fill=>'none', :stroke=>'#888', :stroke_width=>2}
7
+ SamplePath = {:fill=>'none', :stroke=>'red', :stroke_width=>5}
8
+ EndPoint = {:fill=>'none', :stroke=>'#888', :stroke_width=>2}
9
+ CtlPoint = {:fill=>'#888', :stroke=>'none'}
10
+ AutoCtlPoint = {:fill=>'none', :stroke=>'blue', :stroke_width=>4}
11
+ Label = {:font_size=>22, :font_family=>'Verdana', :font_weight=>'normal', :font_style=>'normal'}
12
+
13
+ rvg = Magick::RVG.new(5.cm, 4.cm).viewbox(0, 0, 500, 400) do |canvas|
14
+ canvas.title = "Example cubic01 - cubic Bezier commands in path data"
15
+ canvas.desc = <<-END_DESC
16
+ Picture showing a simple example of path data using both a
17
+ "C" and an "S" command, along with annotations showing the
18
+ control points and end points.
19
+ END_DESC
20
+
21
+ canvas.background_fill = 'white'
22
+ canvas.rect(496, 395, 1, 1).styles(Border)
23
+
24
+ canvas.polyline(100,200, 100,100).styles(Connect)
25
+ canvas.polyline(250,100, 250,200).styles(Connect)
26
+ canvas.polyline(250,200, 250,300).styles(Connect)
27
+ canvas.polyline(400,300, 400,200).styles(Connect)
28
+
29
+ canvas.path("M100,200 C100,100 250,100 250,200 S400,300 400,200").styles(SamplePath)
30
+
31
+ canvas.circle(10, 100, 200).styles(EndPoint)
32
+ canvas.circle(10, 250, 200).styles(EndPoint)
33
+ canvas.circle(10, 400, 200).styles(EndPoint)
34
+ canvas.circle(10, 100, 100).styles(CtlPoint)
35
+ canvas.circle(10, 250, 100).styles(CtlPoint)
36
+ canvas.circle(10, 400, 300).styles(CtlPoint)
37
+ canvas.circle(9, 250, 300).styles(AutoCtlPoint)
38
+
39
+ canvas.text(25, 70, 'M100,200 C100,100 250,100 250,200').styles(Label)
40
+ canvas.text(225, 350, 'S400,300 400,200').styles(Label)
41
+
42
+ end
43
+
44
+ rvg.draw.write('cubic01.gif')
45
+
@@ -0,0 +1,94 @@
1
+ require 'rvg/rvg'
2
+
3
+ Magick::RVG.dpi = 90
4
+
5
+ Border = { :fill=>'none', :stroke=>'blue', :stroke_width=>1 }
6
+ Connect = { :fill=>'none', :stroke=>'#888888', :stroke_width=>2 }
7
+ SamplePath = { :fill=>'none', :stroke=>'red', :stroke_width=>5 }
8
+ EndPoint = { :fill=>'none', :stroke=>'#888888', :stroke_width=>2 }
9
+ CtlPoint = { :fill=>'#888888', :stroke=>'none' }
10
+ AutoCtlPoint = { :fill=>'none', :stroke=>'blue', :stroke_width=>4 }
11
+ Label = { :text_anchor=>'middle', :font_size=>22, :font_family=>'Verdana', :font_weight=>'normal', :font_style=>'normal' }
12
+
13
+ rvg = Magick::RVG.new(10.cm, 10.cm).viewbox(0, 0, 1000, 1000) do |canvas|
14
+ canvas.title = 'Example cubic02 - cubic Bezier commands in path data'
15
+ canvas.desc = <<-END_DESC
16
+ Picture showing examples of "C" and "S" commands,
17
+ along with annotations showing the control points
18
+ and end points
19
+ END_DESC
20
+
21
+ canvas.background_fill = 'white'
22
+ canvas.rect(996, 996, 1, 1).styles(Border)
23
+
24
+ # Path 1
25
+ canvas.polyline(100,200, 100,100).styles(Connect)
26
+ canvas.polyline(400,100, 400,200).styles(Connect)
27
+ canvas.path('M100,200 C100,100 400,100 400,200').styles(SamplePath)
28
+ canvas.circle(10, 100, 200).styles(EndPoint)
29
+ canvas.circle(10, 400, 200).styles(EndPoint)
30
+ canvas.circle(10, 100, 100).styles(CtlPoint)
31
+ canvas.circle(10, 400, 100).styles(CtlPoint)
32
+ canvas.text(250, 275, 'M100,200 C100,100 400,100 400,200').styles(Label)
33
+
34
+ # Path 2
35
+ canvas.polyline(100,500, 25,400).styles(Connect)
36
+ canvas.polyline(475,400, 400,500).styles(Connect)
37
+ canvas.path("M100,500 C25,400 475,400 400,500").styles(SamplePath)
38
+ canvas.circle(10, 100, 500).styles(EndPoint)
39
+ canvas.circle(10, 400, 500).styles(EndPoint)
40
+ canvas.circle(10, 25, 400).styles(CtlPoint)
41
+ canvas.circle(10, 475, 400).styles(CtlPoint)
42
+ canvas.text(250, 575, "M100,500 C25,400 475,400 400,500").styles(Label)
43
+
44
+ # Path 3
45
+ canvas.polyline(100,800, 175,700).styles(Connect)
46
+ canvas.polyline(325,700, 400,800).styles(Connect)
47
+ canvas.path("M100,800 C175,700 325,700 400,800").styles(SamplePath)
48
+ canvas.circle(10, 100, 800).styles(EndPoint)
49
+ canvas.circle(10, 400, 800).styles(EndPoint)
50
+ canvas.circle(10, 175, 700).styles(CtlPoint)
51
+ canvas.circle(10, 325, 700).styles(CtlPoint)
52
+ canvas.text(250, 875, "M100,800 C175,700 325,700 400,800").styles(Label)
53
+
54
+ # Path 4
55
+ canvas.polyline(600,200, 675,100).styles(Connect)
56
+ canvas.polyline(975,100, 900,200).styles(Connect)
57
+ canvas.path("M600,200 C675,100 975,100 900,200").styles(SamplePath)
58
+ canvas.circle(10, 600, 200).styles(EndPoint)
59
+ canvas.circle(10, 900, 200).styles(EndPoint)
60
+ canvas.circle(10, 675, 100).styles(CtlPoint)
61
+ canvas.circle(10, 975, 100).styles(CtlPoint)
62
+ canvas.text(750, 275, "M600,200 C675,100 975,100 900,200").styles(Label)
63
+
64
+ # Path 5
65
+ canvas.polyline(600,500, 600,350).styles(Connect)
66
+ canvas.polyline(900,650, 900,500).styles(Connect)
67
+ canvas.path("M600,500 C600,350 900,650 900,500").styles(SamplePath)
68
+ canvas.circle(10, 600, 500).styles(EndPoint)
69
+ canvas.circle(10, 900, 500).styles(EndPoint)
70
+ canvas.circle(10, 600, 350).styles(CtlPoint)
71
+ canvas.circle(10, 900, 650).styles(CtlPoint)
72
+ canvas.text(750, 575, "M600,500 C600,350 900,650 900,500").styles(Label)
73
+
74
+ # Path 6 (C and S command)
75
+ canvas.polyline(600,800, 625,700).styles(Connect)
76
+ canvas.polyline(725,700, 750,800).styles(Connect)
77
+ canvas.polyline(750,800, 775,900).styles(Connect)
78
+ canvas.polyline(875,900, 900,800).styles(Connect)
79
+ canvas.path("M600,800 C625,700 725,700 750,800 S875,900 900,800").styles(SamplePath)
80
+ canvas.circle(10, 600, 800).styles(EndPoint)
81
+ canvas.circle(10, 750, 800).styles(EndPoint)
82
+ canvas.circle(10, 900, 800).styles(EndPoint)
83
+ canvas.circle(10, 625, 700).styles(CtlPoint)
84
+ canvas.circle(10, 725, 700).styles(CtlPoint)
85
+ canvas.circle(10, 875, 900).styles(CtlPoint)
86
+ canvas.circle(10, 775, 900).styles(AutoCtlPoint)
87
+ canvas.text(750, 945, "M600,800 C625,700 725,700 750,800").styles(Label)
88
+ canvas.text(750, 975, "S875,900 900,800").styles(Label)
89
+
90
+ end
91
+
92
+ rvg.draw.write('cubic02.gif')
93
+
94
+
@@ -0,0 +1,21 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ # Demonstrate the Image#cycle_colormap method
5
+
6
+ balloons = Magick::Image.read('images/Hot_Air_Balloons.jpg').first
7
+ balloons = balloons.quantize(256, Magick::RGBColorspace)
8
+
9
+ jump = balloons.colors / 10
10
+
11
+ animation = Magick::ImageList.new
12
+ animation[0] = balloons
13
+
14
+ 5.times { animation << animation.cycle_colormap(jump) }
15
+ 4.times { animation << animation.cycle_colormap(-jump) }
16
+
17
+ animation.delay=20
18
+ animation.iterations = 10000
19
+ #animation.animate
20
+ animation.write('cycle_colormap.gif')
21
+ exit
@@ -0,0 +1,13 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ require 'RMagick'
4
+
5
+ bgnd = Magick::Image.read('images/Violin.jpg').first
6
+ overlay = Magick::Image.read('images/Flower_Hat.jpg').first
7
+
8
+ # Make the violin image the same size as the hat image
9
+ bgnd.resize_to_fill!(overlay.columns, overlay.rows)
10
+
11
+ composited = bgnd.dissolve(overlay, 0.50)
12
+ composited.write('dissolve.jpg')
13
+
@@ -0,0 +1,42 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ require 'RMagick'
4
+
5
+ # Read the snake image file and scale to 200 pixels high.
6
+ begin
7
+ snake = Magick::ImageList.new("images/Snake.wmf")
8
+ snake.scale!(200.0/snake.rows)
9
+
10
+ # Read the coffee cup image and scale to 200 pixels high.
11
+ coffee = Magick::ImageList.new("images/Coffee.wmf")
12
+ coffee.scale!(200.0/coffee.rows)
13
+
14
+ # We want the "no" symbol to be a little smaller.
15
+ # Read and scale to 150 pixels high.
16
+ sign = Magick::ImageList.new("images/No.wmf")
17
+ sign.scale!(150.0/sign.rows)
18
+
19
+ # Change the white pixels in the sign to transparent.
20
+ sign = sign.matte_replace(0,0)
21
+
22
+ # Create a "nosnake" draw object. Add a composite
23
+ # primitive that composites the "no" symbol over
24
+ # the snake. Draw it.
25
+ nosnake = Magick::Draw.new
26
+ nosnake.composite((snake.columns-sign.columns)/2,
27
+ (snake.rows-sign.rows)/2, 0, 0, sign)
28
+ nosnake.draw(snake)
29
+
30
+ # Repeat for the coffee cup.
31
+ nocoffee = Magick::Draw.new
32
+ nocoffee.composite((coffee.columns-sign.columns)/2,
33
+ (coffee.columns-sign.columns)/2, 0, 0, sign)
34
+ nocoffee.draw(coffee)
35
+
36
+ coffee.write("drawcomp1.gif")
37
+ snake.write("drawcomp2.gif")
38
+
39
+ rescue Magick::ImageMagickError
40
+ puts "#{$0}: ImageMagickError - #{$!}"
41
+ end
42
+ exit
@@ -0,0 +1,60 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ # Add a drop shadow to a text string. This example
5
+ # uses a 3-image animation to show each step of the
6
+ # process
7
+
8
+ Rows = 60
9
+ Cols = 250
10
+ Text = 'Ruby rocks!'
11
+
12
+ # This imagelist will contain the animation frames
13
+ anim = Magick::ImageList.new
14
+
15
+ ex = Magick::Image.new(Cols, Rows)
16
+
17
+ # Create a Draw object to draw the text with. Most of the text
18
+ # attributes are shared between the shadow and the foreground.
19
+
20
+ text = Magick::Draw.new
21
+ text.gravity = Magick::CenterGravity
22
+ text.pointsize = 36
23
+ text.font_weight = Magick::BoldWeight
24
+ text.font_style = Magick::ItalicStyle
25
+ text.stroke = 'transparent'
26
+
27
+ # Draw the shadow text first. The color is a very light gray.
28
+ # Position the text to the right and down.
29
+ text.annotate(ex, 0,0,2,2, Text) {
30
+ self.fill = 'gray60'
31
+ }
32
+
33
+ # Save the first frame of the animation.
34
+ anim << ex.copy
35
+
36
+ # Blur the shadow. Save a copy of the image as the 2nd frame.
37
+ ex = ex.blur_image(0,3)
38
+ anim << ex.copy
39
+
40
+ # Add the foreground text in solid black. Position it
41
+ # to the left and up from the shadow text.
42
+ text.annotate(ex, 0,0,-1,-1, Text) {
43
+ self.fill = 'maroon'
44
+ }
45
+
46
+ # Save yet another copy of the image as the 3rd frame.
47
+ anim << ex.copy
48
+
49
+ # Set the delay between frames to 1 second.
50
+ anim.delay = 100
51
+
52
+ # Set the delay after the last frame to 3 seconds.
53
+ anim.cur_image.delay = 300
54
+
55
+ # Iterate forever.
56
+ anim.iterations = 0
57
+
58
+ #anim.animate
59
+ anim.write('drop_shadow.gif')
60
+ exit
@@ -0,0 +1,11 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ # Demonstrate the Image#edge method
5
+
6
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
7
+ img = img.quantize(256, Magick::GRAYColorspace)
8
+ img = img.edge(5)
9
+
10
+ img.write('edge.jpg')
11
+ exit
@@ -0,0 +1,45 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ imgl = Magick::ImageList.new
5
+ imgl.new_image(360, 250, Magick::HatchFill.new('white','LightCyan2'))
6
+
7
+ gc = Magick::Draw.new
8
+
9
+ gc.fill_opacity(0)
10
+ gc.stroke('red').stroke_width(3)
11
+
12
+ # Draw ellipse
13
+ gc.ellipse(180,125, 150,75, 0, 270)
14
+
15
+ # Draw horizontal width line
16
+ gc.stroke('gray50').stroke_width(1)
17
+ gc.line(180-150, 125, 180, 125)
18
+
19
+ # Draw vertical height line
20
+ gc.line(180, 125-75, 180, 125)
21
+ gc.fill_opacity(0)
22
+
23
+ # Draw arcStart circle
24
+ gc.circle(180+150, 125, 180+150+3, 125+3)
25
+
26
+ # Draw arcEnd circle
27
+ gc.circle(180, 125-75, 180+3, 125-75+3)
28
+
29
+ # Annotate
30
+ gc.font_weight(Magick::NormalWeight)
31
+ gc.font_style(Magick::NormalStyle)
32
+ gc.fill_opacity(1)
33
+ gc.circle(180,125, 183,128)
34
+ gc.fill('black')
35
+ gc.stroke('transparent')
36
+ gc.text(187,125, "'180,125'")
37
+ gc.text(253, 118, "'Start 0 degrees'")
38
+ gc.text(187, 50, "'End 270 degrees'")
39
+ gc.text(120, 100, "'Height=75'")
40
+ gc.text(85, 140, "'Width=150'")
41
+ gc.draw(imgl)
42
+
43
+ imgl.border!(1,1, "LightCyan2")
44
+
45
+ imgl.write("ellipse.gif")