rmagick 2.16.0 → 5.1.0

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