rmagick 2.13.2 → 4.2.2

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 (380) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +63 -0
  3. data/.editorconfig +17 -0
  4. data/.github/ISSUE_TEMPLATE.md +17 -0
  5. data/.github/workflows/ci.yml +107 -0
  6. data/.gitignore +25 -0
  7. data/.rspec +2 -0
  8. data/.rubocop.yml +37 -0
  9. data/.rubocop_todo.yml +449 -0
  10. data/.yardopts +5 -0
  11. data/CHANGELOG.md +1277 -0
  12. data/CODE_OF_CONDUCT.md +128 -0
  13. data/CONTRIBUTING.md +81 -0
  14. data/Gemfile +4 -0
  15. data/LICENSE +20 -0
  16. data/README.md +324 -0
  17. data/Rakefile +190 -0
  18. data/before_install_linux.sh +69 -0
  19. data/before_install_osx.sh +57 -0
  20. data/deprecated/RMagick.rb +6 -0
  21. data/ext/RMagick/extconf.rb +334 -333
  22. data/ext/RMagick/rmagick.c +129 -127
  23. data/ext/RMagick/rmagick.h +221 -320
  24. data/ext/RMagick/rmdraw.c +458 -767
  25. data/ext/RMagick/rmenum.c +305 -752
  26. data/ext/RMagick/rmfill.c +231 -199
  27. data/ext/RMagick/rmilist.c +437 -478
  28. data/ext/RMagick/rmimage.c +6130 -5342
  29. data/ext/RMagick/rminfo.c +695 -833
  30. data/ext/RMagick/rmkinfo.c +198 -0
  31. data/ext/RMagick/rmmain.c +752 -506
  32. data/ext/RMagick/rmmontage.c +94 -152
  33. data/ext/RMagick/rmpixel.c +619 -425
  34. data/ext/RMagick/rmstruct.c +206 -309
  35. data/ext/RMagick/rmutil.c +514 -344
  36. data/lib/rmagick/version.rb +5 -0
  37. data/lib/rmagick.rb +1 -0
  38. data/lib/rmagick_internal.rb +1922 -0
  39. data/lib/rvg/clippath.rb +35 -39
  40. data/lib/rvg/container.rb +123 -124
  41. data/lib/rvg/deep_equal.rb +45 -49
  42. data/lib/rvg/describable.rb +41 -47
  43. data/lib/rvg/embellishable.rb +380 -411
  44. data/lib/rvg/misc.rb +691 -711
  45. data/lib/rvg/paint.rb +43 -47
  46. data/lib/rvg/pathdata.rb +119 -125
  47. data/lib/rvg/rvg.rb +214 -213
  48. data/lib/rvg/stretchable.rb +153 -162
  49. data/lib/rvg/stylable.rb +111 -117
  50. data/lib/rvg/text.rb +169 -180
  51. data/lib/rvg/transformable.rb +121 -127
  52. data/lib/rvg/units.rb +58 -61
  53. data/rmagick.gemspec +36 -16
  54. metadata +188 -365
  55. data/ChangeLog +0 -773
  56. data/Doxyfile +0 -1514
  57. data/README-Mac-OSX.txt +0 -1
  58. data/README.html +0 -10
  59. data/build_tarball.rake +0 -215
  60. data/doc/comtasks.html +0 -287
  61. data/doc/constants.html +0 -1581
  62. data/doc/css/doc.css +0 -299
  63. data/doc/css/popup.css +0 -34
  64. data/doc/css/ref.css +0 -67
  65. data/doc/draw.html +0 -3269
  66. data/doc/ex/InitialCoords.rb +0 -23
  67. data/doc/ex/NewCoordSys.rb +0 -32
  68. data/doc/ex/OrigCoordSys.rb +0 -18
  69. data/doc/ex/PreserveAspectRatio.rb +0 -205
  70. data/doc/ex/RotateScale.rb +0 -37
  71. data/doc/ex/Skew.rb +0 -38
  72. data/doc/ex/Use01.rb +0 -16
  73. data/doc/ex/Use02.rb +0 -21
  74. data/doc/ex/Use03.rb +0 -16
  75. data/doc/ex/ViewBox.rb +0 -33
  76. data/doc/ex/adaptive_threshold.rb +0 -10
  77. data/doc/ex/add_noise.rb +0 -17
  78. data/doc/ex/affine.rb +0 -48
  79. data/doc/ex/affine_transform.rb +0 -20
  80. data/doc/ex/arc.rb +0 -49
  81. data/doc/ex/arcpath.rb +0 -33
  82. data/doc/ex/arcs01.rb +0 -28
  83. data/doc/ex/arcs02.rb +0 -61
  84. data/doc/ex/average.rb +0 -15
  85. data/doc/ex/axes.rb +0 -64
  86. data/doc/ex/baseline_shift01.rb +0 -18
  87. data/doc/ex/bilevel_channel.rb +0 -9
  88. data/doc/ex/blur_image.rb +0 -12
  89. data/doc/ex/border.rb +0 -10
  90. data/doc/ex/bounding_box.rb +0 -44
  91. data/doc/ex/cbezier1.rb +0 -42
  92. data/doc/ex/cbezier2.rb +0 -42
  93. data/doc/ex/cbezier3.rb +0 -42
  94. data/doc/ex/cbezier4.rb +0 -43
  95. data/doc/ex/cbezier5.rb +0 -43
  96. data/doc/ex/cbezier6.rb +0 -53
  97. data/doc/ex/channel.rb +0 -26
  98. data/doc/ex/charcoal.rb +0 -12
  99. data/doc/ex/chop.rb +0 -29
  100. data/doc/ex/circle.rb +0 -33
  101. data/doc/ex/circle01.rb +0 -17
  102. data/doc/ex/clip_path.rb +0 -60
  103. data/doc/ex/coalesce.rb +0 -60
  104. data/doc/ex/color_fill_to_border.rb +0 -29
  105. data/doc/ex/color_floodfill.rb +0 -28
  106. data/doc/ex/color_histogram.rb +0 -48
  107. data/doc/ex/color_reset.rb +0 -11
  108. data/doc/ex/colorize.rb +0 -16
  109. data/doc/ex/colors.rb +0 -64
  110. data/doc/ex/compose_mask.rb +0 -23
  111. data/doc/ex/composite.rb +0 -135
  112. data/doc/ex/composite_layers.rb +0 -53
  113. data/doc/ex/composite_tiled.rb +0 -23
  114. data/doc/ex/contrast.rb +0 -36
  115. data/doc/ex/crop.rb +0 -31
  116. data/doc/ex/crop_with_gravity.rb +0 -46
  117. data/doc/ex/cubic01.rb +0 -45
  118. data/doc/ex/cubic02.rb +0 -94
  119. data/doc/ex/cycle_colormap.rb +0 -21
  120. data/doc/ex/dissolve.rb +0 -13
  121. data/doc/ex/drawcomp.rb +0 -42
  122. data/doc/ex/drop_shadow.rb +0 -60
  123. data/doc/ex/edge.rb +0 -11
  124. data/doc/ex/ellipse.rb +0 -45
  125. data/doc/ex/ellipse01.rb +0 -22
  126. data/doc/ex/emboss.rb +0 -11
  127. data/doc/ex/enhance.rb +0 -28
  128. data/doc/ex/equalize.rb +0 -11
  129. data/doc/ex/evenodd.rb +0 -43
  130. data/doc/ex/fill_pattern.rb +0 -26
  131. data/doc/ex/flatten_images.rb +0 -36
  132. data/doc/ex/flip.rb +0 -11
  133. data/doc/ex/flop.rb +0 -11
  134. data/doc/ex/font_styles.rb +0 -34
  135. data/doc/ex/fonts.rb +0 -20
  136. data/doc/ex/frame.rb +0 -12
  137. data/doc/ex/gaussian_blur.rb +0 -11
  138. data/doc/ex/get_multiline_type_metrics.rb +0 -42
  139. data/doc/ex/get_pixels.rb +0 -48
  140. data/doc/ex/get_type_metrics.rb +0 -146
  141. data/doc/ex/gradientfill.rb +0 -27
  142. data/doc/ex/grav.rb +0 -46
  143. data/doc/ex/gravity.rb +0 -79
  144. data/doc/ex/group.rb +0 -26
  145. data/doc/ex/hatchfill.rb +0 -27
  146. data/doc/ex/image.rb +0 -46
  147. data/doc/ex/images/Apple.miff +0 -0
  148. data/doc/ex/images/Ballerina.jpg +0 -0
  149. data/doc/ex/images/Ballerina3.jpg +0 -0
  150. data/doc/ex/images/Button_0.gif +0 -0
  151. data/doc/ex/images/Button_1.gif +0 -0
  152. data/doc/ex/images/Button_2.gif +0 -0
  153. data/doc/ex/images/Button_3.gif +0 -0
  154. data/doc/ex/images/Button_4.gif +0 -0
  155. data/doc/ex/images/Button_5.gif +0 -0
  156. data/doc/ex/images/Button_6.gif +0 -0
  157. data/doc/ex/images/Button_7.gif +0 -0
  158. data/doc/ex/images/Button_8.gif +0 -0
  159. data/doc/ex/images/Button_9.gif +0 -0
  160. data/doc/ex/images/Button_A.gif +0 -0
  161. data/doc/ex/images/Button_B.gif +0 -0
  162. data/doc/ex/images/Button_C.gif +0 -0
  163. data/doc/ex/images/Button_D.gif +0 -0
  164. data/doc/ex/images/Button_E.gif +0 -0
  165. data/doc/ex/images/Button_F.gif +0 -0
  166. data/doc/ex/images/Button_G.gif +0 -0
  167. data/doc/ex/images/Button_H.gif +0 -0
  168. data/doc/ex/images/Button_I.gif +0 -0
  169. data/doc/ex/images/Button_J.gif +0 -0
  170. data/doc/ex/images/Button_K.gif +0 -0
  171. data/doc/ex/images/Button_L.gif +0 -0
  172. data/doc/ex/images/Button_M.gif +0 -0
  173. data/doc/ex/images/Button_N.gif +0 -0
  174. data/doc/ex/images/Button_O.gif +0 -0
  175. data/doc/ex/images/Button_P.gif +0 -0
  176. data/doc/ex/images/Button_Q.gif +0 -0
  177. data/doc/ex/images/Button_R.gif +0 -0
  178. data/doc/ex/images/Button_S.gif +0 -0
  179. data/doc/ex/images/Button_T.gif +0 -0
  180. data/doc/ex/images/Button_U.gif +0 -0
  181. data/doc/ex/images/Button_V.gif +0 -0
  182. data/doc/ex/images/Button_W.gif +0 -0
  183. data/doc/ex/images/Button_X.gif +0 -0
  184. data/doc/ex/images/Button_Y.gif +0 -0
  185. data/doc/ex/images/Button_Z.gif +0 -0
  186. data/doc/ex/images/Cheetah.jpg +0 -0
  187. data/doc/ex/images/Coffee.wmf +0 -0
  188. data/doc/ex/images/Flower_Hat.jpg +0 -0
  189. data/doc/ex/images/Gold_Statue.jpg +0 -0
  190. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  191. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  192. data/doc/ex/images/Leaf.miff +0 -0
  193. data/doc/ex/images/No.wmf +0 -0
  194. data/doc/ex/images/Polynesia.jpg +0 -0
  195. data/doc/ex/images/Red_Rocks.jpg +0 -0
  196. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  197. data/doc/ex/images/Shorts.jpg +0 -0
  198. data/doc/ex/images/Snake.wmf +0 -0
  199. data/doc/ex/images/Violin.jpg +0 -0
  200. data/doc/ex/images/Yellow_Rose.miff +0 -0
  201. data/doc/ex/images/big-duck.gif +0 -0
  202. data/doc/ex/images/duck.gif +0 -0
  203. data/doc/ex/images/duck0.gif +0 -0
  204. data/doc/ex/images/duck1.gif +0 -0
  205. data/doc/ex/images/duck10.gif +0 -0
  206. data/doc/ex/images/duck11.gif +0 -0
  207. data/doc/ex/images/duck12.gif +0 -0
  208. data/doc/ex/images/duck13.gif +0 -0
  209. data/doc/ex/images/duck14.gif +0 -0
  210. data/doc/ex/images/duck15.gif +0 -0
  211. data/doc/ex/images/duck2.gif +0 -0
  212. data/doc/ex/images/duck3.gif +0 -0
  213. data/doc/ex/images/duck4.gif +0 -0
  214. data/doc/ex/images/duck5.gif +0 -0
  215. data/doc/ex/images/duck6.gif +0 -0
  216. data/doc/ex/images/duck7.gif +0 -0
  217. data/doc/ex/images/duck8.gif +0 -0
  218. data/doc/ex/images/duck9.gif +0 -0
  219. data/doc/ex/images/graydient230x6.gif +0 -0
  220. data/doc/ex/images/logo400x83.gif +0 -0
  221. data/doc/ex/images/model.miff +0 -0
  222. data/doc/ex/images/notimplemented.gif +0 -0
  223. data/doc/ex/images/smile.miff +0 -0
  224. data/doc/ex/images/spin.gif +0 -0
  225. data/doc/ex/implode.rb +0 -34
  226. data/doc/ex/level.rb +0 -11
  227. data/doc/ex/level_colors.rb +0 -11
  228. data/doc/ex/line.rb +0 -42
  229. data/doc/ex/line01.rb +0 -23
  230. data/doc/ex/mask.rb +0 -36
  231. data/doc/ex/matte_fill_to_border.rb +0 -40
  232. data/doc/ex/matte_floodfill.rb +0 -33
  233. data/doc/ex/matte_replace.rb +0 -40
  234. data/doc/ex/median_filter.rb +0 -28
  235. data/doc/ex/modulate.rb +0 -11
  236. data/doc/ex/mono.rb +0 -23
  237. data/doc/ex/morph.rb +0 -26
  238. data/doc/ex/mosaic.rb +0 -35
  239. data/doc/ex/motion_blur.rb +0 -11
  240. data/doc/ex/negate.rb +0 -11
  241. data/doc/ex/negate_channel.rb +0 -9
  242. data/doc/ex/nested_rvg.rb +0 -21
  243. data/doc/ex/nonzero.rb +0 -43
  244. data/doc/ex/normalize.rb +0 -11
  245. data/doc/ex/oil_paint.rb +0 -11
  246. data/doc/ex/opacity.rb +0 -37
  247. data/doc/ex/ordered_dither.rb +0 -11
  248. data/doc/ex/path.rb +0 -64
  249. data/doc/ex/pattern1.rb +0 -25
  250. data/doc/ex/pattern2.rb +0 -26
  251. data/doc/ex/polaroid.rb +0 -28
  252. data/doc/ex/polygon.rb +0 -24
  253. data/doc/ex/polygon01.rb +0 -23
  254. data/doc/ex/polyline.rb +0 -23
  255. data/doc/ex/polyline01.rb +0 -23
  256. data/doc/ex/posterize.rb +0 -8
  257. data/doc/ex/preview.rb +0 -9
  258. data/doc/ex/qbezierpath.rb +0 -52
  259. data/doc/ex/quad01.rb +0 -36
  260. data/doc/ex/quantize-m.rb +0 -25
  261. data/doc/ex/radial_blur.rb +0 -9
  262. data/doc/ex/raise.rb +0 -8
  263. data/doc/ex/random_threshold_channel.rb +0 -13
  264. data/doc/ex/rect01.rb +0 -15
  265. data/doc/ex/rect02.rb +0 -22
  266. data/doc/ex/rectangle.rb +0 -35
  267. data/doc/ex/reduce_noise.rb +0 -28
  268. data/doc/ex/remap.rb +0 -12
  269. data/doc/ex/remap_images.rb +0 -21
  270. data/doc/ex/resize_to_fill.rb +0 -10
  271. data/doc/ex/resize_to_fit.rb +0 -10
  272. data/doc/ex/roll.rb +0 -9
  273. data/doc/ex/rotate.rb +0 -45
  274. data/doc/ex/rotate_f.rb +0 -14
  275. data/doc/ex/roundrect.rb +0 -34
  276. data/doc/ex/rubyname.rb +0 -30
  277. data/doc/ex/rvg_clippath.rb +0 -14
  278. data/doc/ex/rvg_linecap.rb +0 -43
  279. data/doc/ex/rvg_linejoin.rb +0 -41
  280. data/doc/ex/rvg_opacity.rb +0 -19
  281. data/doc/ex/rvg_pattern.rb +0 -26
  282. data/doc/ex/rvg_stroke_dasharray.rb +0 -12
  283. data/doc/ex/segment.rb +0 -11
  284. data/doc/ex/sepiatone.rb +0 -8
  285. data/doc/ex/shade.rb +0 -11
  286. data/doc/ex/shadow.rb +0 -31
  287. data/doc/ex/shave.rb +0 -15
  288. data/doc/ex/shear.rb +0 -10
  289. data/doc/ex/sketch.rb +0 -18
  290. data/doc/ex/skewx.rb +0 -52
  291. data/doc/ex/skewy.rb +0 -47
  292. data/doc/ex/smile.rb +0 -125
  293. data/doc/ex/solarize.rb +0 -11
  294. data/doc/ex/sparse_color.rb +0 -55
  295. data/doc/ex/splice.rb +0 -9
  296. data/doc/ex/spread.rb +0 -11
  297. data/doc/ex/stegano.rb +0 -55
  298. data/doc/ex/stroke_dasharray.rb +0 -43
  299. data/doc/ex/stroke_fill.rb +0 -11
  300. data/doc/ex/stroke_linecap.rb +0 -44
  301. data/doc/ex/stroke_linejoin.rb +0 -48
  302. data/doc/ex/stroke_width.rb +0 -49
  303. data/doc/ex/swirl.rb +0 -17
  304. data/doc/ex/text.rb +0 -37
  305. data/doc/ex/text01.rb +0 -17
  306. data/doc/ex/text_align.rb +0 -36
  307. data/doc/ex/text_antialias.rb +0 -38
  308. data/doc/ex/text_styles.rb +0 -21
  309. data/doc/ex/text_undercolor.rb +0 -28
  310. data/doc/ex/texture_fill_to_border.rb +0 -34
  311. data/doc/ex/texture_floodfill.rb +0 -32
  312. data/doc/ex/texturefill.rb +0 -25
  313. data/doc/ex/threshold.rb +0 -13
  314. data/doc/ex/to_blob.rb +0 -14
  315. data/doc/ex/translate.rb +0 -39
  316. data/doc/ex/transparent.rb +0 -38
  317. data/doc/ex/transpose.rb +0 -9
  318. data/doc/ex/transverse.rb +0 -9
  319. data/doc/ex/tref01.rb +0 -25
  320. data/doc/ex/triangle01.rb +0 -16
  321. data/doc/ex/trim.rb +0 -24
  322. data/doc/ex/tspan01.rb +0 -18
  323. data/doc/ex/tspan02.rb +0 -19
  324. data/doc/ex/tspan03.rb +0 -21
  325. data/doc/ex/unsharp_mask.rb +0 -28
  326. data/doc/ex/viewex.rb +0 -35
  327. data/doc/ex/vignette.rb +0 -12
  328. data/doc/ex/watermark.rb +0 -28
  329. data/doc/ex/wave.rb +0 -9
  330. data/doc/ex/wet_floor.rb +0 -59
  331. data/doc/ex/writing_mode01.rb +0 -27
  332. data/doc/ex/writing_mode02.rb +0 -26
  333. data/doc/ilist.html +0 -2056
  334. data/doc/image1.html +0 -4680
  335. data/doc/image2.html +0 -3665
  336. data/doc/image3.html +0 -4522
  337. data/doc/imageattrs.html +0 -1638
  338. data/doc/imusage.html +0 -514
  339. data/doc/index.html +0 -416
  340. data/doc/info.html +0 -1499
  341. data/doc/magick.html +0 -565
  342. data/doc/optequiv.html +0 -2435
  343. data/doc/rvg.html +0 -975
  344. data/doc/rvgclip.html +0 -248
  345. data/doc/rvggroup.html +0 -305
  346. data/doc/rvgimage.html +0 -289
  347. data/doc/rvgpattern.html +0 -475
  348. data/doc/rvgshape.html +0 -406
  349. data/doc/rvgstyle.html +0 -270
  350. data/doc/rvgtext.html +0 -465
  351. data/doc/rvgtspan.html +0 -238
  352. data/doc/rvgtut.html +0 -530
  353. data/doc/rvguse.html +0 -145
  354. data/doc/rvgxform.html +0 -294
  355. data/doc/scripts/doc.js +0 -22
  356. data/doc/scripts/stripeTables.js +0 -23
  357. data/doc/struct.html +0 -1339
  358. data/doc/usage.html +0 -1621
  359. data/examples/constitute.rb +0 -7
  360. data/examples/crop_with_gravity.rb +0 -46
  361. data/examples/demo.rb +0 -324
  362. data/examples/describe.rb +0 -44
  363. data/examples/find_similar_region.rb +0 -34
  364. data/examples/histogram.rb +0 -325
  365. data/examples/identify.rb +0 -187
  366. data/examples/image_opacity.rb +0 -29
  367. data/examples/import_export.rb +0 -31
  368. data/examples/pattern_fill.rb +0 -38
  369. data/examples/rotating_text.rb +0 -45
  370. data/examples/spinner.rb +0 -50
  371. data/examples/thumbnail.rb +0 -65
  372. data/examples/vignette.rb +0 -79
  373. data/ext/RMagick/MANIFEST +0 -358
  374. data/lib/RMagick.rb +0 -1962
  375. data/metaconfig +0 -7
  376. data/post-clean.rb +0 -12
  377. data/post-install.rb +0 -50
  378. data/post-setup.rb +0 -254
  379. data/setup.rb +0 -1585
  380. data/uninstall.rb +0 -76
@@ -1,7 +0,0 @@
1
- #! /usr/local/bin/ruby -w
2
- require 'RMagick'
3
-
4
- f = Magick::Image.read("../doc/ex/images/Flower_Hat.jpg").first
5
- pixels = f.dispatch(0,0,f.columns, f.rows, "RGB")
6
- image = Magick::Image.constitute(f.columns, f.rows, "RGB", pixels)
7
- image.write("constitute.miff")
@@ -1,46 +0,0 @@
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('../doc/ex/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
-
data/examples/demo.rb DELETED
@@ -1,324 +0,0 @@
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("../doc/ex/images/model.miff")
21
- model.border_color = "black"
22
- model.background_color = "black"
23
- model.cur_image[:Label] = "RMagick"
24
-
25
- smile = ImageList.new("../doc/ex/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 = RLECompression
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
data/examples/describe.rb DELETED
@@ -1,44 +0,0 @@
1
-
2
- # Purpose: Demonstrate getting information from the image attributes.
3
- # Usage: describe.rb filename1 [filename2...]
4
- # Notes: The output is similar to ImageMagick's identify command.
5
-
6
- require 'RMagick'
7
-
8
- puts <<END_INFO
9
-
10
- This example shows how to extract attributes from an image.
11
-
12
- END_INFO
13
-
14
- if ARGV.length == 0
15
- puts "Specify one or more image filenames as arguments."
16
- exit
17
- end
18
-
19
-
20
- ARGV.each { |file|
21
- puts file
22
- img = Magick::Image::read(file).first
23
- puts " Format: #{img.format}"
24
- puts " Geometry: #{img.columns}x#{img.rows}"
25
- puts " Class: " + case img.class_type
26
- when Magick::DirectClass
27
- "DirectClass"
28
- when Magick::PseudoClass
29
- "PseudoClass"
30
- end
31
- puts " Depth: #{img.depth} bits-per-pixel"
32
- puts " Colors: #{img.number_colors}"
33
- puts " Filesize: #{img.filesize}"
34
- puts " Resolution: #{img.x_resolution.to_i}x#{img.y_resolution.to_i} "+
35
- "pixels/#{img.units == Magick::PixelsPerInchResolution ?
36
- "inch" : "centimeter"}"
37
-
38
- if img.properties.length > 0
39
- puts " Properties:"
40
- img.properties { |name,value|
41
- puts %Q| #{name} = "#{value}"|
42
- }
43
- end
44
- }
@@ -1,34 +0,0 @@
1
- require 'RMagick'
2
-
3
- # The Image#find_similar_region searches for a region in the image
4
- # similar to the target. This example uses a rectangle from the image
5
- # as the target, assuring that find_similar_region will succeed.
6
-
7
- # Draw a red rectangle over the image that shows where the target matched.
8
-
9
- img = Magick::Image.read('../doc/ex/images/Flower_Hat.jpg').first
10
- target = img.crop(21, 94, 118, 126)
11
-
12
- begin
13
- res = img.find_similar_region(target)
14
- if res
15
- gc = Magick::Draw.new
16
- gc.stroke('red')
17
- gc.stroke_width(2)
18
- gc.fill('none')
19
- gc.rectangle(res[0], res[1], res[0]+target.columns, res[1]+target.rows)
20
- gc.draw(img)
21
- img.matte = false
22
- puts "Found similar region. Writing `find_similar_region.gif'..."
23
- img.write('find_similar_region.gif')
24
- else
25
- puts "No match!"
26
- end
27
- rescue NotImplementedError
28
- $stderr.puts <<-END_MSG
29
- The find_similar_region method is not supported by this version of
30
- ImageMagick/GraphicsMagick.
31
- END_MSG
32
- end
33
-
34
- exit