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,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
data/doc/ex/demo.rb ADDED
@@ -0,0 +1,324 @@
1
+ #!/usr/local/bin/ruby -w
2
+ #
3
+ # Simple demo program for RMagick
4
+ #
5
+ # Concept and algorithms lifted from Magick++ demo script written
6
+ # by Bob Friesenhahn.
7
+ #
8
+ require 'RMagick'
9
+ include Magick
10
+
11
+ #
12
+ # RMagick version of Magick++/demo/demo.cpp
13
+ #
14
+
15
+ Font = "Helvetica"
16
+
17
+ begin
18
+ puts "Read images..."
19
+
20
+ model = ImageList.new("images/model.miff")
21
+ model.border_color = "black"
22
+ model.background_color = "black"
23
+ model.cur_image[:Label] = "RMagick"
24
+
25
+ smile = ImageList.new("images/smile.miff")
26
+ smile.border_color = "black"
27
+ smile.cur_image[:Label] = "Smile"
28
+
29
+ #
30
+ # Create image stack
31
+ #
32
+ puts "Creating thumbnails"
33
+
34
+ # Construct an initial list containing five copies of a null
35
+ # image. This will give us room to fit the logo at the top.
36
+ # Notice I specify the width and height of the images via the
37
+ # optional "size" attribute in the parm block associated with
38
+ # the read method. There are two more examples of this, below.
39
+ example = ImageList.new
40
+ 5.times { example.read("NULL:black") { self.size = "70x70"} }
41
+
42
+ puts " add noise..."
43
+ example << model.add_noise(LaplacianNoise)
44
+ example.cur_image[:Label] = "Add Noise"
45
+
46
+ puts " annotate..."
47
+ example << model.cur_image.copy
48
+ example.cur_image[:Label] = "Annotate"
49
+ draw = Draw.new
50
+ draw.annotate(example, 0, 0, 0, 20, "RMagick") {
51
+ self.pointsize = 18;
52
+ self.font = Font;
53
+ self.stroke = "gold"
54
+ self.fill = "gold"
55
+ self.gravity = NorthGravity
56
+ }
57
+
58
+ puts " blur..."
59
+ example << model.blur_image(0.0, 1.5)
60
+ example.cur_image[:Label] = "Blur"
61
+
62
+ puts " border..."
63
+ example << model.border(6, 6, "gold")
64
+ example.cur_image[:Label] = "Border"
65
+
66
+ puts " channel..."
67
+ example << model.channel(RedChannel)
68
+ example.cur_image[:Label] = "Channel"
69
+
70
+ puts " charcoal..."
71
+ example << model.charcoal
72
+ example.cur_image[:Label] = "Charcoal"
73
+
74
+ puts " composite..."
75
+ example << model.composite(smile, 35, 65, OverCompositeOp)
76
+ example.cur_image[:Label] = "Composite"
77
+
78
+ puts " contrast..."
79
+ example << model.contrast(false)
80
+ example.cur_image[:Label] = "Contrast"
81
+
82
+ puts " convolve..."
83
+ kernel = [ 1, 1, 1, 1, 4, 1, 1, 1, 1 ]
84
+ example << model.convolve(3, kernel)
85
+ example.cur_image[:Label] = "Convolve"
86
+
87
+ puts " crop..."
88
+ example << model.crop(25, 50, 80, 80)
89
+ example.cur_image[:Label] = "Crop"
90
+
91
+ puts " despeckle..."
92
+ example << model.despeckle
93
+ example.cur_image[:Label] = "Despeckle"
94
+
95
+ puts " draw..."
96
+ example << model.cur_image.copy
97
+ example.cur_image[:Label] = "Draw"
98
+ gc = Draw.new
99
+ gc.fill "black"
100
+ gc.fill_opacity 0
101
+ gc.stroke "gold"
102
+ gc.stroke_width 2
103
+ gc.circle 60,90, 60,120
104
+ gc.draw(example)
105
+
106
+ puts " edge..."
107
+ example << model.edge(0)
108
+ example.cur_image[:Label] = "Detect Edges"
109
+
110
+ puts " emboss..."
111
+ example << model.emboss
112
+ example.cur_image[:Label] = "Emboss"
113
+
114
+ puts " equalize..."
115
+ example << model.equalize
116
+ example.cur_image[:Label] = "Equalize"
117
+
118
+ puts " explode..."
119
+ example << model.implode(-1)
120
+ example.background_color = "#000000ff"
121
+ example.cur_image[:Label] = "Explode"
122
+
123
+ puts " flip..."
124
+ example << model.flip
125
+ example.cur_image[:Label] = "Flip"
126
+
127
+ puts " flop..."
128
+ example << model.flop
129
+ example.cur_image[:Label] = "Flop"
130
+
131
+ puts " frame..."
132
+ example << model.frame
133
+ example.cur_image[:Label] = "Frame"
134
+
135
+ puts " gamma..."
136
+ example << model.gamma_correct(1.6)
137
+ example.cur_image[:Label] = "Gamma"
138
+
139
+ puts " gaussian blur..."
140
+ example << model.gaussian_blur(1, 1.5)
141
+ example.cur_image[:Label] = "Gaussian Blur"
142
+
143
+ # To add an Image in one of ImageMagick's built-in formats,
144
+ # call the read method. The filename specifies the format and
145
+ # any parameters it needs. The gradient format can be created in
146
+ # any size. Specify the desired size by assigning it, in the form
147
+ # "WxH", to the optional "size" attribute in the block associated
148
+ # with the read method. Here we create a gradient image that is
149
+ # the same size as the model image.
150
+ puts " gradient..."
151
+ example.read("gradient:#20a0ff-#ffff00") {
152
+ self.size = Geometry.new(model.columns, model.rows)
153
+ }
154
+ example.cur_image[:Label] = "Gradient"
155
+
156
+ puts " grayscale..."
157
+ example << model.cur_image.quantize(256, GRAYColorspace)
158
+ example.cur_image[:Label] = "Grayscale"
159
+
160
+ puts " implode..."
161
+ example << model.implode(0.5)
162
+ example.cur_image[:Label] = "Implode"
163
+
164
+ puts " median filter..."
165
+ example << model.median_filter(0)
166
+ example.cur_image[:Label] = "Median Filter"
167
+
168
+ puts " modulate..."
169
+ example << model.modulate(1.10, 1.10, 1.10)
170
+ example.cur_image[:Label] = "Modulate"
171
+
172
+ puts " monochrome..."
173
+ example << model.cur_image.quantize(2, GRAYColorspace, false)
174
+ example.cur_image[:Label] = "Monochrome"
175
+
176
+ puts " negate..."
177
+ example << model.negate
178
+ example.cur_image[:Label] = "Negate"
179
+
180
+ puts " normalize..."
181
+ example << model.normalize
182
+ example.cur_image[:Label] = "Normalize"
183
+
184
+ puts " oil paint..."
185
+ example << model.oil_paint(3.0)
186
+ example.cur_image[:Label] = "Oil Paint"
187
+
188
+ # The plasma format is very similar to the gradient format, above.
189
+ puts " plasma..."
190
+ example.read("plasma:fractal") {
191
+ self.size = Geometry.new(model.columns, model.rows)
192
+ }
193
+ example.cur_image[:Label] = "Plasma"
194
+
195
+ puts " quantize..."
196
+ example << model.cur_image.quantize
197
+ example.cur_image[:Label] = "Quantize"
198
+
199
+ puts " raise..."
200
+ example << model.raise
201
+ example.cur_image[:Label] = "Raise"
202
+
203
+ puts " reduce noise..."
204
+ example << model.reduce_noise(3.0)
205
+ example.cur_image[:Label] = "Reduce Noise"
206
+
207
+ puts " resize..."
208
+ example << model.resize(0.50)
209
+ example.cur_image[:Label] = "Resize"
210
+
211
+ puts " roll..."
212
+ example << model.roll(20, 10)
213
+ example.cur_image[:Label] = "Roll"
214
+
215
+ puts " rotate..."
216
+ example << model.rotate(45).transparent("black")
217
+ example.cur_image[:Label] = "Rotate"
218
+
219
+ puts " scale..."
220
+ example << model.scale(0.60)
221
+ example.cur_image[:Label] = "Scale"
222
+
223
+ puts " segment..."
224
+ example << model.segment
225
+ example.cur_image[:Label] = "Segment"
226
+
227
+ puts " shade..."
228
+ example << model.shade(false, 30, 30)
229
+ example.cur_image[:Label] = "Shade"
230
+
231
+ puts " sharpen..."
232
+ example << model.sharpen(0.0, 1.0)
233
+ example.cur_image[:Label] = "Sharpen"
234
+
235
+ puts " shave..."
236
+ example << model.shave(10, 10)
237
+ example.cur_image[:Label] = "Shave"
238
+
239
+ puts " shear..."
240
+ example << model.shear(45, 45).transparent("black")
241
+ example.cur_image[:Label] = "Shear"
242
+
243
+ puts " spread..."
244
+ example << model.spread(3)
245
+ example.cur_image[:Label] = "Spread"
246
+
247
+ puts " solarize..."
248
+ example << model.solarize(50.0)
249
+ example.cur_image[:Label] = "Solarize"
250
+
251
+ puts " swirl..."
252
+ temp = model.copy
253
+ temp.background_color = "#000000ff"
254
+ example << temp.swirl(90)
255
+ example.cur_image[:Label] = "Swirl"
256
+
257
+ puts " unsharp mask..."
258
+ example << model.unsharp_mask(0.0, 1.0, 1.0, 0.05)
259
+ example.cur_image[:Label] = "Unsharp Mask"
260
+
261
+ puts " wave..."
262
+ temp = model.copy
263
+ temp.cur_image[:Label] = "Wave"
264
+ temp.matte = true
265
+ temp.background_color = "#000000ff"
266
+ example << temp.wave(25, 150)
267
+
268
+ #
269
+ # Create image montage - notice the optional
270
+ # montage parameters are supplied via a block
271
+ #
272
+
273
+ puts "Montage images..."
274
+
275
+ montage = example.montage {
276
+ self.geometry = "130x194+10+5>"
277
+ self.gravity = CenterGravity
278
+ self.border_width = 1
279
+ rows = (example.size + 4) / 5
280
+ self.tile = Geometry.new(5,rows)
281
+ self.compose = OverCompositeOp
282
+
283
+ # Use the ImageMagick built-in "granite" format
284
+ # as the background texture.
285
+
286
+ # self.texture = Image.read("granite:").first
287
+ self.background_color = "white"
288
+ self.font = Font;
289
+ self.pointsize = 18;
290
+ self.fill = "#600"
291
+ self.filename = "RMagick Demo"
292
+ # self.shadow = true
293
+ # self.frame = "20x20+4+4"
294
+ }
295
+
296
+ # Add the ImageMagick logo to the top of the montage. The "logo:"
297
+ # format is a fixed-size image, so I don't need to specify a size.
298
+ puts "Adding logo image..."
299
+ logo = Image.read("logo:").first
300
+ if /GraphicsMagick/.match Magick_version then
301
+ logo.resize!(200.0/logo.rows)
302
+ else
303
+ logo.crop!(98, 0, 461, 455).resize!(0.45)
304
+ end
305
+
306
+ # Create a new Image for the composited montage and logo
307
+ montage_image = ImageList.new
308
+ montage_image << montage.composite(logo, 245, 0, OverCompositeOp)
309
+
310
+ # Write the result to a file
311
+ montage_image.compression = RunlengthEncodedCompression
312
+ montage_image.matte = false
313
+ puts "Writing image ./rm_demo_out.miff"
314
+ montage_image.write "rm_demo_out.miff"
315
+
316
+ # Uncomment the following lines to display image to screen
317
+ # puts "Displaying image..."
318
+ # montage_image.display
319
+
320
+ rescue
321
+ puts "Caught exception: #{$!}"
322
+ end
323
+
324
+ exit
@@ -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 2 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