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