rmagick-windows 2.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.editorconfig +14 -0
- data/.gitignore +23 -0
- data/.hound.yml +2 -0
- data/.rspec +1 -0
- data/.rubocop.yml +340 -0
- data/.simplecov +27 -0
- data/.travis.yml +60 -0
- data/CHANGELOG.md +915 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/CONTRIBUTING.md +50 -0
- data/Doxyfile +1514 -0
- data/Gemfile +10 -0
- data/LICENSE +20 -0
- data/README.textile +257 -0
- data/Rakefile +188 -0
- data/before_install_linux.sh +32 -0
- data/before_install_osx.sh +2 -0
- data/deprecated/RMagick.rb +6 -0
- data/doc/.cvsignore +1 -0
- data/doc/comtasks.html +287 -0
- data/doc/constants.html +1581 -0
- data/doc/css/doc.css +299 -0
- data/doc/css/popup.css +34 -0
- data/doc/css/ref.css +67 -0
- data/doc/draw.html +3272 -0
- data/doc/ex/InitialCoords.rb +22 -0
- data/doc/ex/NewCoordSys.rb +30 -0
- data/doc/ex/OrigCoordSys.rb +16 -0
- data/doc/ex/PreserveAspectRatio.rb +204 -0
- data/doc/ex/RotateScale.rb +36 -0
- data/doc/ex/Skew.rb +38 -0
- data/doc/ex/Use01.rb +15 -0
- data/doc/ex/Use02.rb +20 -0
- data/doc/ex/Use03.rb +16 -0
- data/doc/ex/ViewBox.rb +31 -0
- data/doc/ex/adaptive_threshold.rb +9 -0
- data/doc/ex/add_noise.rb +16 -0
- data/doc/ex/affine.rb +48 -0
- data/doc/ex/affine_transform.rb +20 -0
- data/doc/ex/arc.rb +49 -0
- data/doc/ex/arcpath.rb +32 -0
- data/doc/ex/arcs01.rb +28 -0
- data/doc/ex/arcs02.rb +59 -0
- data/doc/ex/average.rb +15 -0
- data/doc/ex/axes.rb +64 -0
- data/doc/ex/baseline_shift01.rb +17 -0
- data/doc/ex/bilevel_channel.rb +8 -0
- data/doc/ex/blur_image.rb +12 -0
- data/doc/ex/border.rb +10 -0
- data/doc/ex/bounding_box.rb +42 -0
- data/doc/ex/cbezier1.rb +41 -0
- data/doc/ex/cbezier2.rb +41 -0
- data/doc/ex/cbezier3.rb +41 -0
- data/doc/ex/cbezier4.rb +42 -0
- data/doc/ex/cbezier5.rb +42 -0
- data/doc/ex/cbezier6.rb +53 -0
- data/doc/ex/channel.rb +25 -0
- data/doc/ex/charcoal.rb +12 -0
- data/doc/ex/chop.rb +29 -0
- data/doc/ex/circle.rb +33 -0
- data/doc/ex/circle01.rb +16 -0
- data/doc/ex/clip_path.rb +60 -0
- data/doc/ex/coalesce.rb +57 -0
- data/doc/ex/color_fill_to_border.rb +29 -0
- data/doc/ex/color_floodfill.rb +28 -0
- data/doc/ex/color_histogram.rb +47 -0
- data/doc/ex/color_reset.rb +11 -0
- data/doc/ex/colorize.rb +16 -0
- data/doc/ex/colors.rb +64 -0
- data/doc/ex/compose_mask.rb +22 -0
- data/doc/ex/composite.rb +133 -0
- data/doc/ex/composite_layers.rb +53 -0
- data/doc/ex/composite_tiled.rb +21 -0
- data/doc/ex/contrast.rb +36 -0
- data/doc/ex/crop.rb +31 -0
- data/doc/ex/crop_with_gravity.rb +42 -0
- data/doc/ex/cubic01.rb +43 -0
- data/doc/ex/cubic02.rb +91 -0
- data/doc/ex/cycle_colormap.rb +21 -0
- data/doc/ex/dissolve.rb +12 -0
- data/doc/ex/drawcomp.rb +42 -0
- data/doc/ex/drop_shadow.rb +60 -0
- data/doc/ex/edge.rb +11 -0
- data/doc/ex/ellipse.rb +45 -0
- data/doc/ex/ellipse01.rb +21 -0
- data/doc/ex/emboss.rb +11 -0
- data/doc/ex/enhance.rb +28 -0
- data/doc/ex/equalize.rb +11 -0
- data/doc/ex/evenodd.rb +42 -0
- data/doc/ex/fill_pattern.rb +23 -0
- data/doc/ex/flatten_images.rb +36 -0
- data/doc/ex/flip.rb +11 -0
- data/doc/ex/flop.rb +11 -0
- data/doc/ex/font_styles.rb +32 -0
- data/doc/ex/fonts.rb +20 -0
- data/doc/ex/frame.rb +12 -0
- data/doc/ex/gaussian_blur.rb +11 -0
- data/doc/ex/get_multiline_type_metrics.rb +41 -0
- data/doc/ex/get_pixels.rb +47 -0
- data/doc/ex/get_type_metrics.rb +141 -0
- data/doc/ex/gradientfill.rb +27 -0
- data/doc/ex/grav.rb +45 -0
- data/doc/ex/gravity.rb +80 -0
- data/doc/ex/group.rb +26 -0
- data/doc/ex/hatchfill.rb +27 -0
- data/doc/ex/image.rb +44 -0
- data/doc/ex/images/Apple.miff +0 -0
- data/doc/ex/images/Ballerina.jpg +0 -0
- data/doc/ex/images/Ballerina3.jpg +0 -0
- data/doc/ex/images/Button_0.gif +0 -0
- data/doc/ex/images/Button_1.gif +0 -0
- data/doc/ex/images/Button_2.gif +0 -0
- data/doc/ex/images/Button_3.gif +0 -0
- data/doc/ex/images/Button_4.gif +0 -0
- data/doc/ex/images/Button_5.gif +0 -0
- data/doc/ex/images/Button_6.gif +0 -0
- data/doc/ex/images/Button_7.gif +0 -0
- data/doc/ex/images/Button_8.gif +0 -0
- data/doc/ex/images/Button_9.gif +0 -0
- data/doc/ex/images/Button_A.gif +0 -0
- data/doc/ex/images/Button_B.gif +0 -0
- data/doc/ex/images/Button_C.gif +0 -0
- data/doc/ex/images/Button_D.gif +0 -0
- data/doc/ex/images/Button_E.gif +0 -0
- data/doc/ex/images/Button_F.gif +0 -0
- data/doc/ex/images/Button_G.gif +0 -0
- data/doc/ex/images/Button_H.gif +0 -0
- data/doc/ex/images/Button_I.gif +0 -0
- data/doc/ex/images/Button_J.gif +0 -0
- data/doc/ex/images/Button_K.gif +0 -0
- data/doc/ex/images/Button_L.gif +0 -0
- data/doc/ex/images/Button_M.gif +0 -0
- data/doc/ex/images/Button_N.gif +0 -0
- data/doc/ex/images/Button_O.gif +0 -0
- data/doc/ex/images/Button_P.gif +0 -0
- data/doc/ex/images/Button_Q.gif +0 -0
- data/doc/ex/images/Button_R.gif +0 -0
- data/doc/ex/images/Button_S.gif +0 -0
- data/doc/ex/images/Button_T.gif +0 -0
- data/doc/ex/images/Button_U.gif +0 -0
- data/doc/ex/images/Button_V.gif +0 -0
- data/doc/ex/images/Button_W.gif +0 -0
- data/doc/ex/images/Button_X.gif +0 -0
- data/doc/ex/images/Button_Y.gif +0 -0
- data/doc/ex/images/Button_Z.gif +0 -0
- data/doc/ex/images/Cheetah.jpg +0 -0
- data/doc/ex/images/Coffee.wmf +0 -0
- data/doc/ex/images/Flower_Hat.jpg +0 -0
- data/doc/ex/images/Gold_Statue.jpg +0 -0
- data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
- data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
- data/doc/ex/images/Leaf.miff +0 -0
- data/doc/ex/images/No.wmf +0 -0
- data/doc/ex/images/Polynesia.jpg +0 -0
- data/doc/ex/images/Red_Rocks.jpg +0 -0
- data/doc/ex/images/Rocks_On_Beach.miff +0 -0
- data/doc/ex/images/Shorts.jpg +0 -0
- data/doc/ex/images/Snake.wmf +0 -0
- data/doc/ex/images/Violin.jpg +0 -0
- data/doc/ex/images/Yellow_Rose.miff +0 -0
- data/doc/ex/images/big-duck.gif +0 -0
- data/doc/ex/images/duck.gif +0 -0
- data/doc/ex/images/duck0.gif +0 -0
- data/doc/ex/images/duck1.gif +0 -0
- data/doc/ex/images/duck10.gif +0 -0
- data/doc/ex/images/duck11.gif +0 -0
- data/doc/ex/images/duck12.gif +0 -0
- data/doc/ex/images/duck13.gif +0 -0
- data/doc/ex/images/duck14.gif +0 -0
- data/doc/ex/images/duck15.gif +0 -0
- data/doc/ex/images/duck2.gif +0 -0
- data/doc/ex/images/duck3.gif +0 -0
- data/doc/ex/images/duck4.gif +0 -0
- data/doc/ex/images/duck5.gif +0 -0
- data/doc/ex/images/duck6.gif +0 -0
- data/doc/ex/images/duck7.gif +0 -0
- data/doc/ex/images/duck8.gif +0 -0
- data/doc/ex/images/duck9.gif +0 -0
- data/doc/ex/images/graydient230x6.gif +0 -0
- data/doc/ex/images/image_with_profile.jpg +0 -0
- data/doc/ex/images/logo400x83.gif +0 -0
- data/doc/ex/images/model.miff +0 -0
- data/doc/ex/images/notimplemented.gif +0 -0
- data/doc/ex/images/smile.miff +0 -0
- data/doc/ex/images/spin.gif +0 -0
- data/doc/ex/implode.rb +34 -0
- data/doc/ex/level.rb +11 -0
- data/doc/ex/level_colors.rb +11 -0
- data/doc/ex/line.rb +41 -0
- data/doc/ex/line01.rb +21 -0
- data/doc/ex/mask.rb +35 -0
- data/doc/ex/matte_fill_to_border.rb +39 -0
- data/doc/ex/matte_floodfill.rb +32 -0
- data/doc/ex/matte_replace.rb +39 -0
- data/doc/ex/median_filter.rb +28 -0
- data/doc/ex/modulate.rb +11 -0
- data/doc/ex/mono.rb +23 -0
- data/doc/ex/morph.rb +25 -0
- data/doc/ex/mosaic.rb +35 -0
- data/doc/ex/motion_blur.rb +11 -0
- data/doc/ex/negate.rb +11 -0
- data/doc/ex/negate_channel.rb +9 -0
- data/doc/ex/nested_rvg.rb +21 -0
- data/doc/ex/nonzero.rb +42 -0
- data/doc/ex/normalize.rb +11 -0
- data/doc/ex/oil_paint.rb +11 -0
- data/doc/ex/opacity.rb +37 -0
- data/doc/ex/ordered_dither.rb +11 -0
- data/doc/ex/path.rb +63 -0
- data/doc/ex/pattern1.rb +25 -0
- data/doc/ex/pattern2.rb +26 -0
- data/doc/ex/polaroid.rb +27 -0
- data/doc/ex/polygon.rb +23 -0
- data/doc/ex/polygon01.rb +21 -0
- data/doc/ex/polyline.rb +22 -0
- data/doc/ex/polyline01.rb +21 -0
- data/doc/ex/posterize.rb +8 -0
- data/doc/ex/preview.rb +8 -0
- data/doc/ex/qbezierpath.rb +52 -0
- data/doc/ex/quad01.rb +34 -0
- data/doc/ex/quantize-m.rb +25 -0
- data/doc/ex/radial_blur.rb +9 -0
- data/doc/ex/raise.rb +8 -0
- data/doc/ex/random_threshold_channel.rb +13 -0
- data/doc/ex/rect01.rb +14 -0
- data/doc/ex/rect02.rb +20 -0
- data/doc/ex/rectangle.rb +34 -0
- data/doc/ex/reduce_noise.rb +28 -0
- data/doc/ex/remap.rb +11 -0
- data/doc/ex/remap_images.rb +19 -0
- data/doc/ex/resize_to_fill.rb +8 -0
- data/doc/ex/resize_to_fit.rb +8 -0
- data/doc/ex/roll.rb +9 -0
- data/doc/ex/rotate.rb +44 -0
- data/doc/ex/rotate_f.rb +14 -0
- data/doc/ex/roundrect.rb +33 -0
- data/doc/ex/rubyname.rb +30 -0
- data/doc/ex/rvg_clippath.rb +12 -0
- data/doc/ex/rvg_linecap.rb +42 -0
- data/doc/ex/rvg_linejoin.rb +40 -0
- data/doc/ex/rvg_opacity.rb +18 -0
- data/doc/ex/rvg_pattern.rb +26 -0
- data/doc/ex/rvg_stroke_dasharray.rb +11 -0
- data/doc/ex/segment.rb +11 -0
- data/doc/ex/sepiatone.rb +7 -0
- data/doc/ex/shade.rb +11 -0
- data/doc/ex/shadow.rb +30 -0
- data/doc/ex/shave.rb +15 -0
- data/doc/ex/shear.rb +10 -0
- data/doc/ex/sketch.rb +17 -0
- data/doc/ex/skewx.rb +51 -0
- data/doc/ex/skewy.rb +47 -0
- data/doc/ex/smile.rb +125 -0
- data/doc/ex/solarize.rb +11 -0
- data/doc/ex/sparse_color.rb +54 -0
- data/doc/ex/splice.rb +8 -0
- data/doc/ex/spread.rb +11 -0
- data/doc/ex/stegano.rb +55 -0
- data/doc/ex/stroke_dasharray.rb +42 -0
- data/doc/ex/stroke_fill.rb +10 -0
- data/doc/ex/stroke_linecap.rb +44 -0
- data/doc/ex/stroke_linejoin.rb +48 -0
- data/doc/ex/stroke_width.rb +49 -0
- data/doc/ex/swirl.rb +17 -0
- data/doc/ex/text.rb +37 -0
- data/doc/ex/text01.rb +16 -0
- data/doc/ex/text_align.rb +36 -0
- data/doc/ex/text_antialias.rb +37 -0
- data/doc/ex/text_styles.rb +19 -0
- data/doc/ex/text_undercolor.rb +28 -0
- data/doc/ex/texture_fill_to_border.rb +34 -0
- data/doc/ex/texture_floodfill.rb +32 -0
- data/doc/ex/texturefill.rb +24 -0
- data/doc/ex/threshold.rb +13 -0
- data/doc/ex/to_blob.rb +13 -0
- data/doc/ex/translate.rb +39 -0
- data/doc/ex/transparent.rb +38 -0
- data/doc/ex/transpose.rb +9 -0
- data/doc/ex/transverse.rb +9 -0
- data/doc/ex/tref01.rb +24 -0
- data/doc/ex/triangle01.rb +15 -0
- data/doc/ex/trim.rb +23 -0
- data/doc/ex/tspan01.rb +17 -0
- data/doc/ex/tspan02.rb +17 -0
- data/doc/ex/tspan03.rb +19 -0
- data/doc/ex/unsharp_mask.rb +28 -0
- data/doc/ex/viewex.rb +33 -0
- data/doc/ex/vignette.rb +12 -0
- data/doc/ex/watermark.rb +27 -0
- data/doc/ex/wave.rb +9 -0
- data/doc/ex/wet_floor.rb +58 -0
- data/doc/ex/writing_mode01.rb +26 -0
- data/doc/ex/writing_mode02.rb +26 -0
- data/doc/ilist.html +2056 -0
- data/doc/image1.html +4680 -0
- data/doc/image2.html +3665 -0
- data/doc/image3.html +4522 -0
- data/doc/imageattrs.html +1638 -0
- data/doc/imusage.html +514 -0
- data/doc/index.html +416 -0
- data/doc/info.html +1499 -0
- data/doc/magick.html +565 -0
- data/doc/optequiv.html +2435 -0
- data/doc/rvg.html +975 -0
- data/doc/rvgclip.html +248 -0
- data/doc/rvggroup.html +305 -0
- data/doc/rvgimage.html +289 -0
- data/doc/rvgpattern.html +475 -0
- data/doc/rvgshape.html +406 -0
- data/doc/rvgstyle.html +270 -0
- data/doc/rvgtext.html +465 -0
- data/doc/rvgtspan.html +238 -0
- data/doc/rvgtut.html +530 -0
- data/doc/rvguse.html +145 -0
- data/doc/rvgxform.html +294 -0
- data/doc/scripts/doc.js +22 -0
- data/doc/scripts/stripeTables.js +23 -0
- data/doc/struct.html +1339 -0
- data/doc/usage.html +1621 -0
- data/examples/constitute.rb +7 -0
- data/examples/crop_with_gravity.rb +42 -0
- data/examples/demo.rb +324 -0
- data/examples/describe.rb +43 -0
- data/examples/find_similar_region.rb +34 -0
- data/examples/histogram.rb +321 -0
- data/examples/identify.rb +185 -0
- data/examples/image_opacity.rb +29 -0
- data/examples/import_export.rb +31 -0
- data/examples/pattern_fill.rb +38 -0
- data/examples/rotating_text.rb +44 -0
- data/examples/spinner.rb +49 -0
- data/examples/thumbnail.rb +64 -0
- data/examples/vignette.rb +78 -0
- data/ext/RMagick/extconf.rb +548 -0
- data/ext/RMagick/rmagick.c +401 -0
- data/ext/RMagick/rmagick.h +1287 -0
- data/ext/RMagick/rmdraw.c +2022 -0
- data/ext/RMagick/rmenum.c +1235 -0
- data/ext/RMagick/rmfill.c +720 -0
- data/ext/RMagick/rmilist.c +1270 -0
- data/ext/RMagick/rmimage.c +15427 -0
- data/ext/RMagick/rminfo.c +2590 -0
- data/ext/RMagick/rmmain.c +1741 -0
- data/ext/RMagick/rmmontage.c +519 -0
- data/ext/RMagick/rmpixel.c +1114 -0
- data/ext/RMagick/rmstruct.c +1124 -0
- data/ext/RMagick/rmutil.c +1754 -0
- data/lib/rmagick.rb +1 -0
- data/lib/rmagick/version.rb +6 -0
- data/lib/rmagick_internal.rb +1947 -0
- data/lib/rvg/clippath.rb +45 -0
- data/lib/rvg/container.rb +122 -0
- data/lib/rvg/deep_equal.rb +52 -0
- data/lib/rvg/describable.rb +47 -0
- data/lib/rvg/embellishable.rb +391 -0
- data/lib/rvg/misc.rb +723 -0
- data/lib/rvg/paint.rb +50 -0
- data/lib/rvg/pathdata.rb +126 -0
- data/lib/rvg/rvg.rb +283 -0
- data/lib/rvg/stretchable.rb +165 -0
- data/lib/rvg/stylable.rb +116 -0
- data/lib/rvg/text.rb +172 -0
- data/lib/rvg/transformable.rb +126 -0
- data/lib/rvg/units.rb +63 -0
- data/rmagick.gemspec +46 -0
- data/spec/rmagick/ImageList1_spec.rb +24 -0
- data/spec/rmagick/draw_spec.rb +156 -0
- data/spec/rmagick/image/blue_shift_spec.rb +16 -0
- data/spec/rmagick/image/composite_spec.rb +140 -0
- data/spec/rmagick/image/constitute_spec.rb +15 -0
- data/spec/rmagick/image/dispatch_spec.rb +18 -0
- data/spec/rmagick/image/from_blob_spec.rb +14 -0
- data/spec/rmagick/image/ping_spec.rb +14 -0
- data/spec/rmagick/image/properties_spec.rb +29 -0
- data/spec/spec_helper.rb +4 -0
- data/test/Image1.rb +565 -0
- data/test/Image2.rb +1304 -0
- data/test/Image3.rb +1030 -0
- data/test/ImageList1.rb +806 -0
- data/test/ImageList2.rb +385 -0
- data/test/Image_attributes.rb +697 -0
- data/test/Import_Export.rb +121 -0
- data/test/Info.rb +345 -0
- data/test/Magick.rb +321 -0
- data/test/Pixel.rb +116 -0
- data/test/Preview.rb +57 -0
- data/test/cmyk.icm +0 -0
- data/test/srgb.icm +0 -0
- data/test/test_all_basic.rb +38 -0
- data/test/tmpnam_test.rb +50 -0
- data/wercker.yml +10 -0
- metadata +509 -0
Binary file
|
data/doc/ex/implode.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
|
3
|
+
require 'rmagick'
|
4
|
+
|
5
|
+
img = Magick::Image.read('images/Flower_Hat.jpg').first
|
6
|
+
|
7
|
+
legend = Magick::Draw.new
|
8
|
+
legend.stroke = 'transparent'
|
9
|
+
legend.fill = 'white'
|
10
|
+
legend.gravity = Magick::SouthGravity
|
11
|
+
|
12
|
+
frames = Magick::ImageList.new
|
13
|
+
|
14
|
+
implosion = 0.25
|
15
|
+
8.times do
|
16
|
+
frames << img.implode(implosion)
|
17
|
+
legend.annotate(frames, 0,0,10,20, sprintf('% 4.2f', implosion))
|
18
|
+
frames.matte = false
|
19
|
+
implosion -= 0.10
|
20
|
+
end
|
21
|
+
|
22
|
+
7.times do
|
23
|
+
implosion += 0.10
|
24
|
+
frames << img.implode(implosion)
|
25
|
+
legend.annotate(frames, 0,0,10,20, sprintf('% 4.2f', implosion))
|
26
|
+
frames.matte = false
|
27
|
+
end
|
28
|
+
|
29
|
+
frames.delay = 10
|
30
|
+
frames.iterations = 0
|
31
|
+
puts 'Producing animation...'
|
32
|
+
|
33
|
+
frames.write('implode.gif')
|
34
|
+
exit
|
data/doc/ex/level.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
require 'rmagick'
|
3
|
+
|
4
|
+
# Demonstrate the Image#level method
|
5
|
+
|
6
|
+
before = Magick::Image.read('images/Flower_Hat.jpg').first
|
7
|
+
|
8
|
+
# Brighten up the mid-tones a bit.
|
9
|
+
after = before.level(0, Magick::QuantumRange, 1.50)
|
10
|
+
after.write('level.jpg')
|
11
|
+
exit
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rmagick'
|
2
|
+
|
3
|
+
img = Magick::Image.read('images/Flower_Hat.jpg').first
|
4
|
+
begin
|
5
|
+
img = img.level_colors('green', 'orange', true)
|
6
|
+
img.alpha(Magick::DeactivateAlphaChannel)
|
7
|
+
rescue NotImplementedError
|
8
|
+
not_imp = Magick::Image.read('images/notimplemented.gif').first
|
9
|
+
img = not_imp.resize(img.columns, img.rows)
|
10
|
+
end
|
11
|
+
img.write('level_colors.jpg')
|
data/doc/ex/line.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
require 'rmagick'
|
3
|
+
|
4
|
+
imgl = Magick::ImageList.new
|
5
|
+
imgl.new_image(250, 250, Magick::HatchFill.new('white','LightCyan2'))
|
6
|
+
|
7
|
+
gc = Magick::Draw.new
|
8
|
+
|
9
|
+
gc.stroke_linejoin('round')
|
10
|
+
|
11
|
+
# Draw 3 lines in 3 colors.
|
12
|
+
# Make each line 2 pixels wide.
|
13
|
+
gc.stroke('red')
|
14
|
+
gc.stroke_width(3)
|
15
|
+
gc.line(50,50, 50,200)
|
16
|
+
gc.stroke('blue')
|
17
|
+
gc.line(50,200, 200,200)
|
18
|
+
gc.stroke('green')
|
19
|
+
gc.line(200,200, 50,50)
|
20
|
+
|
21
|
+
# Identify the endpoints with gray circles
|
22
|
+
gc.stroke('gray50')
|
23
|
+
gc.stroke_width(1)
|
24
|
+
gc.fill_opacity(0)
|
25
|
+
gc.circle(50,50, 53,53)
|
26
|
+
gc.circle(50,200, 53,203)
|
27
|
+
gc.circle(200,200, 203,203)
|
28
|
+
|
29
|
+
# Annotate the endpoints
|
30
|
+
gc.font_weight(Magick::NormalWeight)
|
31
|
+
gc.font_style(Magick::NormalStyle)
|
32
|
+
gc.fill('black')
|
33
|
+
gc.stroke('transparent')
|
34
|
+
gc.text(30,40, "'50,50'")
|
35
|
+
gc.text(30,220, "'50,200'")
|
36
|
+
gc.text(180, 220, "'200,200'")
|
37
|
+
|
38
|
+
gc.draw(imgl)
|
39
|
+
imgl.border!(1,1, 'LightCyan2')
|
40
|
+
|
41
|
+
imgl.write('line.gif')
|
data/doc/ex/line01.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'rvg/rvg'
|
2
|
+
|
3
|
+
Magick::RVG.dpi = 90
|
4
|
+
|
5
|
+
rvg = Magick::RVG.new(12.cm, 4.cm).viewbox(0, 0, 1200, 400) do |canvas|
|
6
|
+
canvas.background_fill = 'white'
|
7
|
+
canvas.desc = 'Example line01 - lines expressed in user coordinates'
|
8
|
+
|
9
|
+
# Show outline of canvas using the 'rect' method
|
10
|
+
canvas.rect(1195, 395, 1, 1).styles(:fill=>'none', :stroke=>'blue', :stroke_width=>2)
|
11
|
+
|
12
|
+
canvas.g.styles(:stroke=>'green') do |grp|
|
13
|
+
grp.line(100, 300, 300, 100).styles(:stroke_width=>5)
|
14
|
+
grp.line(300, 300, 500, 100).styles(:stroke_width=>10)
|
15
|
+
grp.line(500, 300, 700, 100).styles(:stroke_width=>15)
|
16
|
+
grp.line(700, 300, 900, 100).styles(:stroke_width=>20)
|
17
|
+
grp.line(900, 300, 1100, 100).styles(:stroke_width=>25)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
rvg.draw.write('line01.gif')
|
data/doc/ex/mask.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
|
3
|
+
require 'rmagick'
|
4
|
+
|
5
|
+
# This example demonstrates the mask attribute. The mask image must
|
6
|
+
# be the same size as the image being masked. Since this mask image does
|
7
|
+
# not have an alpha channel, the intensity of each pixel is used to define the
|
8
|
+
# mask. White pixels are more intense than black pixels, so the area of the
|
9
|
+
# image masked by white pixels will remain unchanged, while the area of the
|
10
|
+
# image masked by black pixels is affected by any transformations.
|
11
|
+
|
12
|
+
# In this example the mask is simply the words "Flower Hat" in black text
|
13
|
+
# positioned near the bottom of the white clip mask image.
|
14
|
+
|
15
|
+
img = Magick::Image.read('images/Flower_Hat.jpg').first
|
16
|
+
q = Magick::Image.new(img.columns, img.rows)
|
17
|
+
|
18
|
+
gc = Magick::Draw.new
|
19
|
+
gc.annotate(q, 0, 0, 0, 0, 'Flower Hat') do
|
20
|
+
gc.gravity = Magick::SouthGravity
|
21
|
+
gc.pointsize = 36
|
22
|
+
gc.font_weight = Magick::BoldWeight
|
23
|
+
end
|
24
|
+
|
25
|
+
# Set the matte attribute to false, indicating the absence of an alpha channel
|
26
|
+
# in the mask image. Assign the mask image to the mask= attribute of the image
|
27
|
+
# being masked.
|
28
|
+
|
29
|
+
q.matte = false
|
30
|
+
img.mask q
|
31
|
+
|
32
|
+
# Use the #level method to darken the image under the black part of the mask.
|
33
|
+
|
34
|
+
img = img.level(0, Magick::QuantumRange, 0.50)
|
35
|
+
img.write('mask.jpg')
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
|
3
|
+
require 'rmagick'
|
4
|
+
|
5
|
+
img = Magick::Image.new(200,200)
|
6
|
+
img.compression = Magick::LZWCompression
|
7
|
+
|
8
|
+
bg = Magick::Image.read('plasma:fractal') { self.size = '200x200' }
|
9
|
+
bg[0].matte = false
|
10
|
+
|
11
|
+
gc = Magick::Draw.new
|
12
|
+
gc.stroke_width(2)
|
13
|
+
gc.stroke('black')
|
14
|
+
gc.fill('white')
|
15
|
+
gc.roundrectangle(0, 0, 199, 199, 8, 8)
|
16
|
+
|
17
|
+
gc.fill('black')
|
18
|
+
gc.circle(100, 45, 100, 25)
|
19
|
+
gc.circle( 45, 100, 25, 100)
|
20
|
+
gc.circle(100, 155, 100, 175)
|
21
|
+
gc.circle(155, 100, 175, 100)
|
22
|
+
|
23
|
+
gc.draw(img)
|
24
|
+
|
25
|
+
img.write('matte_fill_to_border_before.gif')
|
26
|
+
|
27
|
+
# Set the border color. Set the fuzz attribute so that
|
28
|
+
# the matte fill will fill the aliased pixels around
|
29
|
+
# the edges of the black circles.
|
30
|
+
img.border_color = 'black'
|
31
|
+
img.fuzz = 10
|
32
|
+
img = img.matte_fill_to_border(100, 100)
|
33
|
+
|
34
|
+
# Composite the image over a nice bright background
|
35
|
+
# so that the transparent pixels will be obvious.
|
36
|
+
img = bg[0].composite(img, Magick::CenterGravity, Magick::OverCompositeOp)
|
37
|
+
|
38
|
+
img.write('matte_fill_to_border_after.gif')
|
39
|
+
exit
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
|
3
|
+
require 'rmagick'
|
4
|
+
|
5
|
+
img = Magick::Image.new(200,200)
|
6
|
+
img.compression = Magick::LZWCompression
|
7
|
+
|
8
|
+
bg = Magick::Image.read('plasma:fractal') { self.size = '200x200' }
|
9
|
+
bg[0].matte = false
|
10
|
+
|
11
|
+
gc = Magick::Draw.new
|
12
|
+
gc.stroke_width(2)
|
13
|
+
gc.stroke('black')
|
14
|
+
gc.fill('white')
|
15
|
+
gc.roundrectangle(0, 0, 199, 199, 8, 8)
|
16
|
+
|
17
|
+
gc.fill('yellow')
|
18
|
+
gc.stroke('red')
|
19
|
+
gc.circle(100, 100, 100, 25)
|
20
|
+
gc.draw(img)
|
21
|
+
|
22
|
+
img.write('matte_floodfill_before.gif')
|
23
|
+
|
24
|
+
img.fuzz = 100
|
25
|
+
img = img.matte_floodfill(100, 100)
|
26
|
+
|
27
|
+
# Composite the image over a nice bright background
|
28
|
+
# so that the transparent pixels will be obvious.
|
29
|
+
img = bg[0].composite(img, Magick::CenterGravity, Magick::OverCompositeOp)
|
30
|
+
|
31
|
+
img.write('matte_floodfill_after.gif')
|
32
|
+
exit
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
|
3
|
+
require 'rmagick'
|
4
|
+
|
5
|
+
img = Magick::Image.new(200,200)
|
6
|
+
img.compression = Magick::LZWCompression
|
7
|
+
|
8
|
+
bg = Magick::Image.read('plasma:fractal') { self.size = '200x200' }
|
9
|
+
bg[0].matte = false
|
10
|
+
|
11
|
+
gc = Magick::Draw.new
|
12
|
+
gc.stroke_width(2)
|
13
|
+
gc.stroke('black')
|
14
|
+
gc.fill('white')
|
15
|
+
gc.roundrectangle(0, 0, 199, 199, 8, 8)
|
16
|
+
|
17
|
+
gc.fill('black')
|
18
|
+
gc.circle(100, 45, 100, 25)
|
19
|
+
gc.circle( 45, 100, 25, 100)
|
20
|
+
gc.circle(100, 155, 100, 175)
|
21
|
+
gc.circle(155, 100, 175, 100)
|
22
|
+
|
23
|
+
gc.draw(img)
|
24
|
+
|
25
|
+
img.write('matte_replace_before.gif')
|
26
|
+
|
27
|
+
# Set the border color. Set the fuzz attribute so that
|
28
|
+
# the matte fill will fill the aliased pixels around
|
29
|
+
# the edges of the black circles.
|
30
|
+
img.border_color = 'black'
|
31
|
+
img.fuzz = 10
|
32
|
+
img = img.matte_replace(100, 45)
|
33
|
+
|
34
|
+
# Composite the image over a nice bright background
|
35
|
+
# so that the transparent pixels will be obvious.
|
36
|
+
img = bg[0].composite(img, Magick::CenterGravity, Magick::OverCompositeOp)
|
37
|
+
|
38
|
+
img.write('matte_replace_after.gif')
|
39
|
+
exit
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
require 'rmagick'
|
3
|
+
|
4
|
+
# Demonstrate the Image#median_filter method
|
5
|
+
|
6
|
+
img = Magick::Image.read('images/Flower_Hat.jpg').first
|
7
|
+
img = img.add_noise(Magick::UniformNoise)
|
8
|
+
|
9
|
+
eimg = img.median_filter(0.05)
|
10
|
+
|
11
|
+
# Zoom in so we can see the change
|
12
|
+
img.resize!(3)
|
13
|
+
eimg.resize!(3)
|
14
|
+
|
15
|
+
# Make a before-and-after composite
|
16
|
+
eimg.crop!(eimg.columns/2, 0, eimg.columns/2, eimg.rows)
|
17
|
+
img = img.composite(eimg, Magick::EastGravity, Magick::OverCompositeOp)
|
18
|
+
|
19
|
+
# Draw a black line between the before and after parts.
|
20
|
+
line = Magick::Draw.new
|
21
|
+
line.line(img.columns/2, 0, img.columns/2, img.rows)
|
22
|
+
line.draw(img)
|
23
|
+
|
24
|
+
# Crop everything but the face.
|
25
|
+
img.crop!(Magick::CenterGravity, 250, 200)
|
26
|
+
|
27
|
+
img.write('median_filter.jpg')
|
28
|
+
exit
|
data/doc/ex/modulate.rb
ADDED
data/doc/ex/mono.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
require 'rmagick'
|
3
|
+
|
4
|
+
# Demonstrate the ImageListImage#quantize method by converting
|
5
|
+
# a color image into a monochrome image.
|
6
|
+
|
7
|
+
# Read the large color cheetah image and scale it to a third
|
8
|
+
# of its size.
|
9
|
+
cheetah = Magick::Image.read('images/Cheetah.jpg').first
|
10
|
+
cheetah.scale!(0.33)
|
11
|
+
|
12
|
+
# Quantize the cheetah image into 256 colors in the GRAY colorspace.
|
13
|
+
mono_cheetah = cheetah.quantize 256, Magick::GRAYColorspace
|
14
|
+
|
15
|
+
# Cut the top off the monochrome cheetah image.
|
16
|
+
mono_bottom = mono_cheetah.crop 0, mono_cheetah.rows/2, mono_cheetah.columns, mono_cheetah.rows/2
|
17
|
+
|
18
|
+
# Composite the half-height mono cheetah onto the bottom of
|
19
|
+
# the original color cheetah.
|
20
|
+
before_after = cheetah.composite mono_bottom, 0, cheetah.rows/2, Magick::OverCompositeOp
|
21
|
+
|
22
|
+
before_after.write 'mono.jpg'
|
23
|
+
exit
|
data/doc/ex/morph.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
|
3
|
+
require 'rmagick'
|
4
|
+
|
5
|
+
# Demonstrate the morph method
|
6
|
+
|
7
|
+
# Read 4 digit image files. Create an
|
8
|
+
# animated morph sequence by inserting 8
|
9
|
+
# in-between images between each pair of digits.
|
10
|
+
|
11
|
+
i = Magick::ImageList.new
|
12
|
+
number = '0'
|
13
|
+
4.times do
|
14
|
+
i.read 'images/Button_' + number + '.gif'
|
15
|
+
number.succ!
|
16
|
+
end
|
17
|
+
|
18
|
+
puts 'This may take a few seconds...'
|
19
|
+
morph = i.morph 8
|
20
|
+
morph.delay = 12
|
21
|
+
morph.iterations = 10000
|
22
|
+
# Display the resulting sequence as an animation.
|
23
|
+
# morph.animate(12)
|
24
|
+
morph.write 'morph.gif'
|
25
|
+
exit
|
data/doc/ex/mosaic.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
require 'rmagick'
|
3
|
+
|
4
|
+
# Demonstrate the mosaic method
|
5
|
+
|
6
|
+
a = Magick::ImageList.new
|
7
|
+
|
8
|
+
letter = 'A'
|
9
|
+
26.times do
|
10
|
+
# 'M' is not the same size as the other letters.
|
11
|
+
if letter != 'M'
|
12
|
+
a.read('images/Button_'+letter+'.gif')
|
13
|
+
end
|
14
|
+
letter.succ!
|
15
|
+
end
|
16
|
+
|
17
|
+
# Make a copy of "a" with all the images quarter-sized
|
18
|
+
b = Magick::ImageList.new
|
19
|
+
page = Magick::Rectangle.new(0,0,0,0)
|
20
|
+
a.scene = 0
|
21
|
+
5.times do |i|
|
22
|
+
5.times do |j|
|
23
|
+
b << a.scale(0.25)
|
24
|
+
page.x = j * b.columns
|
25
|
+
page.y = i * b.rows
|
26
|
+
b.page = page
|
27
|
+
(a.scene += 1) rescue a.scene = 0
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Make a 5x5 mosaic
|
32
|
+
mosaic = b.mosaic
|
33
|
+
mosaic.write('mosaic.gif')
|
34
|
+
# mosaic.display
|
35
|
+
exit
|
data/doc/ex/negate.rb
ADDED