rmagick 1.7.1

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 (239) hide show
  1. data/ChangeLog +232 -0
  2. data/Makefile.in +28 -0
  3. data/README.html +404 -0
  4. data/README.txt +397 -0
  5. data/configure +8554 -0
  6. data/configure.ac +497 -0
  7. data/doc/comtasks.html +241 -0
  8. data/doc/constants.html +1195 -0
  9. data/doc/css/doc.css +299 -0
  10. data/doc/css/popup.css +34 -0
  11. data/doc/draw.html +3108 -0
  12. data/doc/ex/Adispatch.rb +43 -0
  13. data/doc/ex/Zconstitute.rb +9 -0
  14. data/doc/ex/adaptive_threshold.rb +19 -0
  15. data/doc/ex/add_noise.rb +18 -0
  16. data/doc/ex/affine.rb +48 -0
  17. data/doc/ex/affine_transform.rb +20 -0
  18. data/doc/ex/arc.rb +47 -0
  19. data/doc/ex/arcpath.rb +33 -0
  20. data/doc/ex/average.rb +15 -0
  21. data/doc/ex/axes.rb +64 -0
  22. data/doc/ex/bilevel_channel.rb +20 -0
  23. data/doc/ex/blur_image.rb +12 -0
  24. data/doc/ex/border.rb +10 -0
  25. data/doc/ex/bounding_box.rb +48 -0
  26. data/doc/ex/cbezier1.rb +40 -0
  27. data/doc/ex/cbezier2.rb +40 -0
  28. data/doc/ex/cbezier3.rb +40 -0
  29. data/doc/ex/cbezier4.rb +41 -0
  30. data/doc/ex/cbezier5.rb +41 -0
  31. data/doc/ex/cbezier6.rb +51 -0
  32. data/doc/ex/channel.rb +26 -0
  33. data/doc/ex/channel_threshold.rb +48 -0
  34. data/doc/ex/charcoal.rb +12 -0
  35. data/doc/ex/chop.rb +29 -0
  36. data/doc/ex/circle.rb +31 -0
  37. data/doc/ex/clip_path.rb +56 -0
  38. data/doc/ex/coalesce.rb +60 -0
  39. data/doc/ex/color_fill_to_border.rb +29 -0
  40. data/doc/ex/color_floodfill.rb +28 -0
  41. data/doc/ex/color_histogram.rb +60 -0
  42. data/doc/ex/color_reset.rb +11 -0
  43. data/doc/ex/colorize.rb +16 -0
  44. data/doc/ex/colors.rb +65 -0
  45. data/doc/ex/composite.rb +135 -0
  46. data/doc/ex/contrast.rb +37 -0
  47. data/doc/ex/crop.rb +31 -0
  48. data/doc/ex/crop_with_gravity.rb +46 -0
  49. data/doc/ex/cycle_colormap.rb +21 -0
  50. data/doc/ex/demo.rb +324 -0
  51. data/doc/ex/drawcomp.rb +42 -0
  52. data/doc/ex/drop_shadow.rb +60 -0
  53. data/doc/ex/edge.rb +11 -0
  54. data/doc/ex/ellipse.rb +43 -0
  55. data/doc/ex/emboss.rb +11 -0
  56. data/doc/ex/enhance.rb +28 -0
  57. data/doc/ex/equalize.rb +11 -0
  58. data/doc/ex/flatten_images.rb +38 -0
  59. data/doc/ex/flip.rb +11 -0
  60. data/doc/ex/flop.rb +11 -0
  61. data/doc/ex/fonts.rb +20 -0
  62. data/doc/ex/frame.rb +12 -0
  63. data/doc/ex/gaussian_blur.rb +11 -0
  64. data/doc/ex/get_multiline_type_metrics.rb +53 -0
  65. data/doc/ex/get_pixels.rb +48 -0
  66. data/doc/ex/get_type_metrics.rb +140 -0
  67. data/doc/ex/gradientfill.rb +27 -0
  68. data/doc/ex/grav.rb +44 -0
  69. data/doc/ex/gravity.rb +80 -0
  70. data/doc/ex/hatchfill.rb +27 -0
  71. data/doc/ex/images/Ballerina.jpg +0 -0
  72. data/doc/ex/images/Ballerina3.jpg +0 -0
  73. data/doc/ex/images/Button_0.gif +0 -0
  74. data/doc/ex/images/Button_1.gif +0 -0
  75. data/doc/ex/images/Button_2.gif +0 -0
  76. data/doc/ex/images/Button_3.gif +0 -0
  77. data/doc/ex/images/Button_4.gif +0 -0
  78. data/doc/ex/images/Button_5.gif +0 -0
  79. data/doc/ex/images/Button_6.gif +0 -0
  80. data/doc/ex/images/Button_7.gif +0 -0
  81. data/doc/ex/images/Button_8.gif +0 -0
  82. data/doc/ex/images/Button_9.gif +0 -0
  83. data/doc/ex/images/Button_A.gif +0 -0
  84. data/doc/ex/images/Button_B.gif +0 -0
  85. data/doc/ex/images/Button_C.gif +0 -0
  86. data/doc/ex/images/Button_D.gif +0 -0
  87. data/doc/ex/images/Button_E.gif +0 -0
  88. data/doc/ex/images/Button_F.gif +0 -0
  89. data/doc/ex/images/Button_G.gif +0 -0
  90. data/doc/ex/images/Button_H.gif +0 -0
  91. data/doc/ex/images/Button_I.gif +0 -0
  92. data/doc/ex/images/Button_J.gif +0 -0
  93. data/doc/ex/images/Button_K.gif +0 -0
  94. data/doc/ex/images/Button_L.gif +0 -0
  95. data/doc/ex/images/Button_M.gif +0 -0
  96. data/doc/ex/images/Button_N.gif +0 -0
  97. data/doc/ex/images/Button_O.gif +0 -0
  98. data/doc/ex/images/Button_P.gif +0 -0
  99. data/doc/ex/images/Button_Q.gif +0 -0
  100. data/doc/ex/images/Button_R.gif +0 -0
  101. data/doc/ex/images/Button_S.gif +0 -0
  102. data/doc/ex/images/Button_T.gif +0 -0
  103. data/doc/ex/images/Button_U.gif +0 -0
  104. data/doc/ex/images/Button_V.gif +0 -0
  105. data/doc/ex/images/Button_W.gif +0 -0
  106. data/doc/ex/images/Button_X.gif +0 -0
  107. data/doc/ex/images/Button_Y.gif +0 -0
  108. data/doc/ex/images/Button_Z.gif +0 -0
  109. data/doc/ex/images/Cheetah.jpg +0 -0
  110. data/doc/ex/images/Coffee.wmf +0 -0
  111. data/doc/ex/images/Flower_Hat.jpg +0 -0
  112. data/doc/ex/images/Gold_Statue.jpg +0 -0
  113. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  114. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  115. data/doc/ex/images/No.wmf +0 -0
  116. data/doc/ex/images/Polynesia.jpg +0 -0
  117. data/doc/ex/images/Red_Rocks.jpg +0 -0
  118. data/doc/ex/images/Shorts.jpg +0 -0
  119. data/doc/ex/images/Snake.wmf +0 -0
  120. data/doc/ex/images/Violin.jpg +0 -0
  121. data/doc/ex/images/graydient230x6.gif +0 -0
  122. data/doc/ex/images/logo400x83.gif +0 -0
  123. data/doc/ex/images/model.miff +0 -0
  124. data/doc/ex/images/notimplemented.gif +0 -0
  125. data/doc/ex/images/smile.miff +0 -0
  126. data/doc/ex/images/spin.gif +0 -0
  127. data/doc/ex/implode.rb +32 -0
  128. data/doc/ex/level.rb +12 -0
  129. data/doc/ex/level_channel.rb +33 -0
  130. data/doc/ex/line.rb +40 -0
  131. data/doc/ex/map.rb +28 -0
  132. data/doc/ex/map_f.rb +15 -0
  133. data/doc/ex/matte_fill_to_border.rb +42 -0
  134. data/doc/ex/matte_floodfill.rb +35 -0
  135. data/doc/ex/matte_replace.rb +42 -0
  136. data/doc/ex/median_filter.rb +28 -0
  137. data/doc/ex/modulate.rb +11 -0
  138. data/doc/ex/mono.rb +23 -0
  139. data/doc/ex/morph.rb +26 -0
  140. data/doc/ex/mosaic.rb +35 -0
  141. data/doc/ex/motion_blur.rb +11 -0
  142. data/doc/ex/negate.rb +11 -0
  143. data/doc/ex/negate_channel.rb +19 -0
  144. data/doc/ex/normalize.rb +11 -0
  145. data/doc/ex/oil_paint.rb +11 -0
  146. data/doc/ex/opacity.rb +38 -0
  147. data/doc/ex/opaque.rb +14 -0
  148. data/doc/ex/ordered_dither.rb +11 -0
  149. data/doc/ex/path.rb +62 -0
  150. data/doc/ex/pattern1.rb +25 -0
  151. data/doc/ex/pattern2.rb +26 -0
  152. data/doc/ex/polygon.rb +24 -0
  153. data/doc/ex/polyline.rb +23 -0
  154. data/doc/ex/posterize.rb +19 -0
  155. data/doc/ex/preview.rb +16 -0
  156. data/doc/ex/qbezierpath.rb +49 -0
  157. data/doc/ex/quantize-m.rb +25 -0
  158. data/doc/ex/radial_blur.rb +19 -0
  159. data/doc/ex/raise.rb +11 -0
  160. data/doc/ex/random_channel_threshold.rb +17 -0
  161. data/doc/ex/random_threshold_channel.rb +18 -0
  162. data/doc/ex/rectangle.rb +33 -0
  163. data/doc/ex/reduce_noise.rb +28 -0
  164. data/doc/ex/roll.rb +9 -0
  165. data/doc/ex/rotate.rb +43 -0
  166. data/doc/ex/rotate_f.rb +14 -0
  167. data/doc/ex/roundrect.rb +32 -0
  168. data/doc/ex/rubyname.rb +31 -0
  169. data/doc/ex/segment.rb +11 -0
  170. data/doc/ex/shade.rb +11 -0
  171. data/doc/ex/shave.rb +15 -0
  172. data/doc/ex/shear.rb +10 -0
  173. data/doc/ex/skewx.rb +50 -0
  174. data/doc/ex/skewy.rb +45 -0
  175. data/doc/ex/smile.rb +124 -0
  176. data/doc/ex/solarize.rb +11 -0
  177. data/doc/ex/splice.rb +16 -0
  178. data/doc/ex/spread.rb +11 -0
  179. data/doc/ex/stegano.rb +50 -0
  180. data/doc/ex/stroke_dasharray.rb +41 -0
  181. data/doc/ex/stroke_linecap.rb +44 -0
  182. data/doc/ex/stroke_linejoin.rb +48 -0
  183. data/doc/ex/stroke_width.rb +47 -0
  184. data/doc/ex/swirl.rb +17 -0
  185. data/doc/ex/text.rb +32 -0
  186. data/doc/ex/text_align.rb +36 -0
  187. data/doc/ex/text_antialias.rb +33 -0
  188. data/doc/ex/text_undercolor.rb +26 -0
  189. data/doc/ex/texture_fill_to_border.rb +34 -0
  190. data/doc/ex/texture_floodfill.rb +31 -0
  191. data/doc/ex/texturefill.rb +25 -0
  192. data/doc/ex/threshold.rb +13 -0
  193. data/doc/ex/to_blob.rb +14 -0
  194. data/doc/ex/translate.rb +37 -0
  195. data/doc/ex/transparent.rb +38 -0
  196. data/doc/ex/trim.rb +25 -0
  197. data/doc/ex/unsharp_mask.rb +28 -0
  198. data/doc/ex/viewex.rb +36 -0
  199. data/doc/ex/wave.rb +9 -0
  200. data/doc/ilist.html +1592 -0
  201. data/doc/image1.html +3009 -0
  202. data/doc/image2.html +2169 -0
  203. data/doc/image3.html +2815 -0
  204. data/doc/imageattrs.html +1319 -0
  205. data/doc/imusage.html +403 -0
  206. data/doc/index.html +418 -0
  207. data/doc/info.html +949 -0
  208. data/doc/magick.html +439 -0
  209. data/doc/scripts/doc.js +9 -0
  210. data/doc/struct.html +1334 -0
  211. data/doc/usage.html +1318 -0
  212. data/examples/describe.rb +44 -0
  213. data/examples/histogram.rb +289 -0
  214. data/examples/image_opacity.rb +29 -0
  215. data/examples/import_export.rb +31 -0
  216. data/examples/pattern_fill.rb +38 -0
  217. data/examples/rotating_text.rb +47 -0
  218. data/examples/thumbnail.rb +65 -0
  219. data/examples/vignette.rb +79 -0
  220. data/ext/RMagick/MANIFEST +239 -0
  221. data/ext/RMagick/extconf.rb.in +21 -0
  222. data/ext/RMagick/rmagick.h +938 -0
  223. data/ext/RMagick/rmagick_config.h.in +170 -0
  224. data/ext/RMagick/rmdraw.c +1308 -0
  225. data/ext/RMagick/rmfill.c +609 -0
  226. data/ext/RMagick/rmilist.c +685 -0
  227. data/ext/RMagick/rmimage.c +7980 -0
  228. data/ext/RMagick/rminfo.c +982 -0
  229. data/ext/RMagick/rmmain.c +1497 -0
  230. data/ext/RMagick/rmutil.c +2685 -0
  231. data/install.rb +1015 -0
  232. data/lib/RMagick.rb +1486 -0
  233. data/metaconfig.in +6 -0
  234. data/post-clean.rb +12 -0
  235. data/post-install.rb +36 -0
  236. data/post-setup.rb +245 -0
  237. data/rmagick.gemspec +22 -0
  238. data/uninstall.rb +71 -0
  239. metadata +286 -0
@@ -0,0 +1,25 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ require 'RMagick'
4
+
5
+ gc = Magick::Draw.new
6
+ gc.pattern('triangles', 0, 0, 16, 16) {
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
+ }
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
@@ -0,0 +1,26 @@
1
+ #! /usr/local/bin/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) {
11
+ gc.composite(0, 0, 0, 0, hat)
12
+ }
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/polygon.rb ADDED
@@ -0,0 +1,24 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ imgl = Magick::ImageList.new
5
+ imgl.new_image(290, 200, Magick::HatchFill.new('white','lightcyan2'))
6
+
7
+ gc = Magick::Draw.new
8
+ gc.stroke('blue').stroke_width(3)
9
+
10
+ # Draw red 5-pointed star
11
+ gc.fill('red')
12
+ gc.polygon( 75,37.5, 89.5,80.5, 134.5,80.5, 98.5,107.5,
13
+ 111.5,150.5, 75,125, 38.5,150.5, 51.5,107.5,
14
+ 15.5,80.5, 60.5,80.5)
15
+ # Draw green hexagon
16
+ gc.fill('lime')
17
+ gc.polygon(225,37.5, 279,68.75, 279,131.25,
18
+ 225,162.5, 171,131.3, 171,68.75)
19
+
20
+ gc.draw(imgl)
21
+ imgl.border!(1,1, "lightcyan2")
22
+
23
+ imgl.write("polygon.gif")
24
+
@@ -0,0 +1,23 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ imgl = Magick::ImageList.new
5
+ imgl.new_image(300, 100, Magick::HatchFill.new('white','lightcyan2'))
6
+
7
+ points = [12,93.75, 37,93.75, 37,81.25, 62,81.25,
8
+ 62,93.75, 87,93.75, 87,62, 112,62, 112,93.75,
9
+ 137,93.75, 137,43.75, 162,43.75, 162,93.75,
10
+ 187,93.75, 187,25, 212,25, 212,93.75, 237,93.75,
11
+ 237,6.25, 262,6.25, 262,93.75, 287,93.75]
12
+
13
+ gc = Magick::Draw.new
14
+ gc.stroke('blue').stroke_width(3)
15
+ gc.fill_opacity(0)
16
+ gc.polyline(*points)
17
+
18
+ gc.draw(imgl)
19
+
20
+ imgl.border!(1,1, "lightcyan2")
21
+
22
+ imgl.write("polyline.gif")
23
+
@@ -0,0 +1,19 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ require 'RMagick'
4
+ include Magick
5
+
6
+ img = Image.read('images/Flower_Hat.jpg').first
7
+
8
+ begin
9
+
10
+ result = img.posterize
11
+
12
+ # Substitute the standard "Not Implemented" image
13
+ rescue NotImplementedError
14
+ result = Magick::Image.read("images/notimplemented.gif").first
15
+ result.resize!(img.columns, img.rows)
16
+ end
17
+
18
+ result.write('posterize.jpg')
19
+ exit
data/doc/ex/preview.rb ADDED
@@ -0,0 +1,16 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ require 'RMagick'
4
+
5
+ img = Magick::Image.read("images/Flower_Hat.jpg").first
6
+
7
+ begin
8
+ preview = img.preview(Magick::SolarizePreview)
9
+ rescue NotImplementedError
10
+ img = Magick::Image.read('images/notimplemented.gif').first
11
+ img.write('preview.jpg')
12
+ exit
13
+ end
14
+ preview.minify.write('preview.jpg')
15
+ exit
16
+
@@ -0,0 +1,49 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ imgl = Magick::ImageList.new
5
+ imgl.new_image(500, 300, Magick::HatchFill.new('white','lightcyan2'))
6
+
7
+ gc = Magick::Draw.new
8
+
9
+ # Draw path with quadratic bezier commands
10
+ gc.fill_opacity 0
11
+ gc.stroke 'red'
12
+ gc.stroke_width 3
13
+ gc.path "M20,150 Q120,25 220,150 T420,150"
14
+
15
+ # Annotate
16
+ # Show end points
17
+ gc.fill_opacity 1
18
+ gc.stroke 'grey50'
19
+ gc.stroke_width 1
20
+ gc.circle 20,150, 23, 153
21
+ gc.circle 220,150, 223, 153
22
+ gc.circle 420,150, 423, 153
23
+
24
+ # Show control points
25
+ gc.fill 'black'
26
+ gc.stroke 'transparent'
27
+ gc.circle 120,25, 123, 28
28
+ gc.circle 320,275, 323, 278
29
+
30
+ # Show connector lines
31
+ gc.line 20,150, 120,25
32
+ gc.line 120,25, 320,275
33
+ gc.line 320,275, 420,150
34
+
35
+ # Add labels
36
+ # Add end point labels
37
+ gc.text 30,155, "'20,150'"
38
+ gc.text 230,155, "'220,150'"
39
+ gc.text 430,155, "'420,150'"
40
+
41
+ # Add control point labels
42
+ gc.text 130,30, "'120,25'"
43
+ gc.text 330,280, "'320,275'"
44
+
45
+ gc.draw imgl
46
+
47
+ imgl.border!(1,1, "lightcyan2")
48
+ #imgl.display
49
+ imgl.write "qbezierpath.gif"
@@ -0,0 +1,25 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ # Demonstrate the ImageList#quantize method
4
+
5
+ require 'RMagick'
6
+
7
+ snapshots = Magick::ImageList.new "images/Ballerina.jpg","images/Gold_Statue.jpg","images/Shorts.jpg"
8
+
9
+ # Quantize all 3 images to a single set of 16 colors in the RGB colorspace
10
+ $stdout.sync=true
11
+ printf "Quantizing... Please be patient, this may take a couple of seconds... "
12
+ quant = snapshots.quantize 16
13
+ puts "Done."
14
+
15
+ # Now we create the "before" and "after" images.
16
+ # Arrange the original images side-by-side into a
17
+ # single image.
18
+ old = snapshots.append false
19
+ old.write('quantize-m_before.jpg')
20
+
21
+ # Repeat for the quantized images.
22
+ new = quant.append false
23
+ new.write('quantize-m_after.jpg')
24
+
25
+ exit
@@ -0,0 +1,19 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ # Demonstrate the Image#radial_blur method
5
+
6
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
7
+
8
+ # Make a blurry copy.
9
+ begin
10
+ result = img.radial_blur(10.0)
11
+
12
+ # Substitute the standard "Not Implemented" image
13
+ rescue NotImplementedError
14
+ result = Magick::Image.read("images/notimplemented.gif").first
15
+ result.resize!(img.columns, img.rows)
16
+ end
17
+
18
+ result.write('radial_blur.jpg')
19
+ exit
data/doc/ex/raise.rb ADDED
@@ -0,0 +1,11 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+ include Magick
4
+
5
+ # Demonstrate the Image#raise method.
6
+ img = Image.read('images/Flower_Hat.jpg').first
7
+
8
+ img = img.raise
9
+
10
+ img.write('raise.jpg')
11
+ exit
@@ -0,0 +1,17 @@
1
+ #!/home/software/ruby-1.6.8/bin/ruby -w
2
+
3
+ # Demonstrate the random_channel_threshold method
4
+
5
+ require 'RMagick'
6
+ include Magick
7
+
8
+ img = Image.read('images/Flower_Hat.jpg').first
9
+
10
+ begin
11
+ img2 = img.random_channel_threshold('intensity', '35%')
12
+ rescue NotImplementedError
13
+ img2 = Image.read('images/notimplemented.gif').first
14
+ end
15
+
16
+ img2.write('random_channel_threshold.jpg')
17
+ exit
@@ -0,0 +1,18 @@
1
+ #!/home/software/ruby-1.6.8/bin/ruby -w
2
+
3
+ # Demonstrate the random_channel_threshold method
4
+
5
+ require 'RMagick'
6
+ include Magick
7
+
8
+ img = Image.read('images/Flower_Hat.jpg').first
9
+
10
+ begin
11
+ geom = Geometry.new(MaxRGB/2)
12
+ img2 = img.random_threshold_channel(geom, RedChannel)
13
+ rescue NotImplementedError
14
+ img2 = Image.read('images/notimplemented.gif').first
15
+ end
16
+
17
+ img2.write('random_threshold_channel.jpg')
18
+ exit
@@ -0,0 +1,33 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ imgl = Magick::ImageList.new
5
+ imgl.new_image(300, 200, Magick::HatchFill.new('white','lightcyan2'))
6
+
7
+ gc = Magick::Draw.new
8
+
9
+ gc.fill_opacity(0)
10
+ gc.stroke('red')
11
+ gc.stroke_width(3)
12
+
13
+ # Draw rectangle
14
+ gc.rectangle(20,20, 280, 180)
15
+
16
+ # Outline corners
17
+ gc.stroke_width(1)
18
+ gc.stroke('gray50')
19
+ gc.circle(20,20, 23,23)
20
+ gc.circle(280, 180, 283, 183)
21
+
22
+ # Annotate
23
+ gc.fill('black')
24
+ gc.stroke('transparent')
25
+ gc.text(30,35, "'20,20'")
26
+ gc.text(230,175, "'280,180'")
27
+
28
+ gc.draw(imgl)
29
+ imgl.border!(1,1, 'lightcyan2')
30
+
31
+ imgl.write("rectangle.gif")
32
+ exit
33
+
@@ -0,0 +1,28 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ # Demonstrate the Image#reduce_noise method
5
+
6
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
7
+ img = img.add_noise(Magick::UniformNoise)
8
+
9
+ eimg = img.reduce_noise(0)
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('reduce_noise.jpg')
28
+ exit
data/doc/ex/roll.rb ADDED
@@ -0,0 +1,9 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
5
+
6
+ img = img.roll(img.columns/4, img.rows/4)
7
+
8
+ img.write('roll.jpg')
9
+ exit
data/doc/ex/rotate.rb ADDED
@@ -0,0 +1,43 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ imgl = Magick::ImageList.new
5
+ imgl.new_image(200, 200, Magick::HatchFill.new('white','lightcyan2'))
6
+
7
+ gc = Magick::Draw.new
8
+
9
+ # Move the origin to the center.
10
+ gc.translate(100, 100)
11
+ max_x = imgl.columns/2
12
+ max_y = imgl.rows/2
13
+
14
+ # Rotate 45 degrees
15
+ gc.rotate(45)
16
+
17
+ gc.stroke('red')
18
+ gc.stroke_width(3)
19
+
20
+ # Draw down-pointing arrow
21
+ gc.line(0, -max_y, 0, max_y)
22
+ gc.line(0, max_y, 10, max_y-10)
23
+ gc.line(0, max_y, -10, max_y-10)
24
+
25
+ # Draw right-pointing arrow
26
+ gc.line(-max_x, 0, max_x, 0)
27
+ gc.line( max_x, 0, max_x-10, -10)
28
+ gc.line( max_x, 0, max_x-10, 10)
29
+
30
+ # Add labels
31
+ gc.fill('black')
32
+ gc.stroke('transparent')
33
+
34
+ gc.text(8, 15, "'0,0'")
35
+ gc.text(110, 16, "x")
36
+ gc.text(12, 115, "y")
37
+
38
+ gc.draw(imgl)
39
+
40
+ imgl.border!(1,1, "lightcyan2")
41
+
42
+ imgl.write("rotate.gif")
43
+
@@ -0,0 +1,14 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ # Demonstrate the Image#rotate method
5
+
6
+ img = Magick::Image.read('images/Flower_Hat.jpg').first
7
+
8
+ img.rotate!(45)
9
+
10
+ # Make the corners transparent
11
+ img = img.matte_replace(0,0)
12
+
13
+ img.write('rotate_f.jpg')
14
+ exit
@@ -0,0 +1,32 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+
4
+ imgl = Magick::ImageList.new
5
+ imgl.new_image(300, 200, Magick::HatchFill.new('white','LightCyan2'))
6
+
7
+ gc = Magick::Draw.new
8
+
9
+ gc.fill_opacity(0)
10
+ gc.stroke('red')
11
+ gc.stroke_width(3)
12
+
13
+ # Draw rounded rectangle
14
+ gc.roundrectangle(20,20, 280,180, 8, 8)
15
+
16
+ gc.stroke('gray50')
17
+ gc.stroke_width(1)
18
+
19
+ gc.circle(20,20, 23,23)
20
+ gc.circle(280,180, 283,183)
21
+
22
+ # Annotate
23
+ gc.fill('black')
24
+ gc.stroke('transparent')
25
+ gc.text(30,35, "'20,20'")
26
+ gc.text(230, 175, "'280,180'")
27
+
28
+ gc.draw(imgl)
29
+ imgl.border!(1,1, "lightcyan2")
30
+
31
+ imgl.write("roundrect.gif")
32
+