rdp-rmagick 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +769 -0
- data/Doxyfile +1514 -0
- data/README-Mac-OSX.txt +1 -0
- data/README.md +231 -0
- data/build_tarball.rake +215 -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 +3269 -0
- data/doc/ex/InitialCoords.rb +23 -0
- data/doc/ex/NewCoordSys.rb +32 -0
- data/doc/ex/OrigCoordSys.rb +18 -0
- data/doc/ex/PreserveAspectRatio.rb +205 -0
- data/doc/ex/RotateScale.rb +37 -0
- data/doc/ex/Skew.rb +38 -0
- data/doc/ex/Use01.rb +16 -0
- data/doc/ex/Use02.rb +21 -0
- data/doc/ex/Use03.rb +16 -0
- data/doc/ex/ViewBox.rb +33 -0
- data/doc/ex/adaptive_threshold.rb +10 -0
- data/doc/ex/add_noise.rb +17 -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 +33 -0
- data/doc/ex/arcs01.rb +28 -0
- data/doc/ex/arcs02.rb +61 -0
- data/doc/ex/average.rb +15 -0
- data/doc/ex/axes.rb +64 -0
- data/doc/ex/baseline_shift01.rb +18 -0
- data/doc/ex/bilevel_channel.rb +9 -0
- data/doc/ex/blur_image.rb +12 -0
- data/doc/ex/border.rb +10 -0
- data/doc/ex/bounding_box.rb +44 -0
- data/doc/ex/cbezier1.rb +42 -0
- data/doc/ex/cbezier2.rb +42 -0
- data/doc/ex/cbezier3.rb +42 -0
- data/doc/ex/cbezier4.rb +43 -0
- data/doc/ex/cbezier5.rb +43 -0
- data/doc/ex/cbezier6.rb +53 -0
- data/doc/ex/channel.rb +26 -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 +17 -0
- data/doc/ex/clip_path.rb +60 -0
- data/doc/ex/coalesce.rb +60 -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 +48 -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 +23 -0
- data/doc/ex/composite.rb +135 -0
- data/doc/ex/composite_layers.rb +53 -0
- data/doc/ex/composite_tiled.rb +23 -0
- data/doc/ex/contrast.rb +36 -0
- data/doc/ex/crop.rb +31 -0
- data/doc/ex/crop_with_gravity.rb +46 -0
- data/doc/ex/cubic01.rb +45 -0
- data/doc/ex/cubic02.rb +94 -0
- data/doc/ex/cycle_colormap.rb +21 -0
- data/doc/ex/dissolve.rb +13 -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 +22 -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 +43 -0
- data/doc/ex/fill_pattern.rb +26 -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 +34 -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 +42 -0
- data/doc/ex/get_pixels.rb +48 -0
- data/doc/ex/get_type_metrics.rb +146 -0
- data/doc/ex/gradientfill.rb +27 -0
- data/doc/ex/grav.rb +46 -0
- data/doc/ex/gravity.rb +79 -0
- data/doc/ex/group.rb +26 -0
- data/doc/ex/hatchfill.rb +27 -0
- data/doc/ex/image.rb +46 -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/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 +42 -0
- data/doc/ex/line01.rb +23 -0
- data/doc/ex/mask.rb +36 -0
- data/doc/ex/matte_fill_to_border.rb +40 -0
- data/doc/ex/matte_floodfill.rb +33 -0
- data/doc/ex/matte_replace.rb +40 -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 +26 -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 +43 -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 +64 -0
- data/doc/ex/pattern1.rb +25 -0
- data/doc/ex/pattern2.rb +26 -0
- data/doc/ex/polaroid.rb +28 -0
- data/doc/ex/polygon.rb +24 -0
- data/doc/ex/polygon01.rb +23 -0
- data/doc/ex/polyline.rb +23 -0
- data/doc/ex/polyline01.rb +23 -0
- data/doc/ex/posterize.rb +8 -0
- data/doc/ex/preview.rb +9 -0
- data/doc/ex/qbezierpath.rb +52 -0
- data/doc/ex/quad01.rb +36 -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 +15 -0
- data/doc/ex/rect02.rb +22 -0
- data/doc/ex/rectangle.rb +35 -0
- data/doc/ex/reduce_noise.rb +28 -0
- data/doc/ex/remap.rb +12 -0
- data/doc/ex/remap_images.rb +21 -0
- data/doc/ex/resize_to_fill.rb +10 -0
- data/doc/ex/resize_to_fit.rb +10 -0
- data/doc/ex/roll.rb +9 -0
- data/doc/ex/rotate.rb +45 -0
- data/doc/ex/rotate_f.rb +14 -0
- data/doc/ex/roundrect.rb +34 -0
- data/doc/ex/rubyname.rb +30 -0
- data/doc/ex/rvg_clippath.rb +14 -0
- data/doc/ex/rvg_linecap.rb +43 -0
- data/doc/ex/rvg_linejoin.rb +41 -0
- data/doc/ex/rvg_opacity.rb +19 -0
- data/doc/ex/rvg_pattern.rb +26 -0
- data/doc/ex/rvg_stroke_dasharray.rb +12 -0
- data/doc/ex/segment.rb +11 -0
- data/doc/ex/sepiatone.rb +8 -0
- data/doc/ex/shade.rb +11 -0
- data/doc/ex/shadow.rb +31 -0
- data/doc/ex/shave.rb +15 -0
- data/doc/ex/shear.rb +10 -0
- data/doc/ex/sketch.rb +18 -0
- data/doc/ex/skewx.rb +52 -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 +55 -0
- data/doc/ex/splice.rb +9 -0
- data/doc/ex/spread.rb +11 -0
- data/doc/ex/stegano.rb +55 -0
- data/doc/ex/stroke_dasharray.rb +43 -0
- data/doc/ex/stroke_fill.rb +11 -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 +17 -0
- data/doc/ex/text_align.rb +36 -0
- data/doc/ex/text_antialias.rb +38 -0
- data/doc/ex/text_styles.rb +21 -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 +25 -0
- data/doc/ex/threshold.rb +13 -0
- data/doc/ex/to_blob.rb +14 -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 +25 -0
- data/doc/ex/triangle01.rb +16 -0
- data/doc/ex/trim.rb +24 -0
- data/doc/ex/tspan01.rb +18 -0
- data/doc/ex/tspan02.rb +19 -0
- data/doc/ex/tspan03.rb +21 -0
- data/doc/ex/unsharp_mask.rb +28 -0
- data/doc/ex/viewex.rb +35 -0
- data/doc/ex/vignette.rb +12 -0
- data/doc/ex/watermark.rb +28 -0
- data/doc/ex/wave.rb +9 -0
- data/doc/ex/wet_floor.rb +59 -0
- data/doc/ex/writing_mode01.rb +27 -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 +46 -0
- data/examples/demo.rb +324 -0
- data/examples/describe.rb +44 -0
- data/examples/find_similar_region.rb +34 -0
- data/examples/histogram.rb +325 -0
- data/examples/identify.rb +187 -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 +45 -0
- data/examples/spinner.rb +50 -0
- data/examples/thumbnail.rb +65 -0
- data/examples/vignette.rb +79 -0
- data/ext/RMagick/Makefile +180 -0
- data/ext/RMagick/RMagick2.so +0 -0
- data/ext/RMagick/extconf.h +119 -0
- data/ext/RMagick/extconf.rb +406 -0
- data/ext/RMagick/mkmf.log +3022 -0
- data/ext/RMagick/rmagick.c +394 -0
- data/ext/RMagick/rmagick.h +1307 -0
- data/ext/RMagick/rmagick.o +0 -0
- data/ext/RMagick/rmdraw.c +1991 -0
- data/ext/RMagick/rmdraw.o +0 -0
- data/ext/RMagick/rmenum.c +1224 -0
- data/ext/RMagick/rmenum.o +0 -0
- data/ext/RMagick/rmfill.c +717 -0
- data/ext/RMagick/rmfill.o +0 -0
- data/ext/RMagick/rmilist.c +1217 -0
- data/ext/RMagick/rmilist.o +0 -0
- data/ext/RMagick/rmimage.c +15099 -0
- data/ext/RMagick/rmimage.o +0 -0
- data/ext/RMagick/rminfo.c +2567 -0
- data/ext/RMagick/rminfo.o +0 -0
- data/ext/RMagick/rmmain.c +1705 -0
- data/ext/RMagick/rmmain.o +0 -0
- data/ext/RMagick/rmmontage.c +511 -0
- data/ext/RMagick/rmmontage.o +0 -0
- data/ext/RMagick/rmpixel.c +1103 -0
- data/ext/RMagick/rmpixel.o +0 -0
- data/ext/RMagick/rmstruct.c +1047 -0
- data/ext/RMagick/rmstruct.o +0 -0
- data/ext/RMagick/rmutil.c +1730 -0
- data/ext/RMagick/rmutil.o +0 -0
- data/lib/RMagick.rb +1962 -0
- data/lib/rvg/clippath.rb +48 -0
- data/lib/rvg/container.rb +131 -0
- data/lib/rvg/deep_equal.rb +56 -0
- data/lib/rvg/describable.rb +53 -0
- data/lib/rvg/embellishable.rb +417 -0
- data/lib/rvg/misc.rb +740 -0
- data/lib/rvg/paint.rb +55 -0
- data/lib/rvg/pathdata.rb +131 -0
- data/lib/rvg/rvg.rb +283 -0
- data/lib/rvg/stretchable.rb +168 -0
- data/lib/rvg/stylable.rb +124 -0
- data/lib/rvg/text.rb +187 -0
- data/lib/rvg/to_c.rb +103 -0
- data/lib/rvg/transformable.rb +133 -0
- data/lib/rvg/units.rb +66 -0
- data/metaconfig +7 -0
- data/post-clean.rb +12 -0
- data/post-install.rb +50 -0
- data/post-setup.rb +254 -0
- data/rmagick.gemspec +20 -0
- data/setup.rb +1585 -0
- data/test/Draw.rb +121 -0
- data/test/Image1.rb +762 -0
- data/test/Image2.rb +1308 -0
- data/test/Image3.rb +1001 -0
- data/test/ImageList1.rb +808 -0
- data/test/ImageList2.rb +389 -0
- data/test/Image_attributes.rb +682 -0
- data/test/Import_Export.rb +116 -0
- data/test/Info.rb +349 -0
- data/test/Magick.rb +364 -0
- data/test/Pixel.rb +120 -0
- data/test/Preview.rb +62 -0
- data/test/all_basic.rb +39 -0
- data/test/cmyk.icm +0 -0
- data/test/srgb.icm +0 -0
- data/test/test.0 +0 -0
- data/uninstall.rb +74 -0
- metadata +455 -0
@@ -0,0 +1,29 @@
|
|
1
|
+
|
2
|
+
# Ccreate a semi-transparent title for an image.
|
3
|
+
|
4
|
+
require 'RMagick'
|
5
|
+
include Magick
|
6
|
+
|
7
|
+
puts <<END_INFO
|
8
|
+
|
9
|
+
This example uses a semi-transparent background color to create a title.
|
10
|
+
View the resulting image by entering the command: display image_opacity.miff
|
11
|
+
|
12
|
+
END_INFO
|
13
|
+
|
14
|
+
balloons = Image.read('../doc/ex/images/Hot_Air_Balloons_H.jpg').first
|
15
|
+
legend = Image.new(160, 50) { self.background_color = '#ffffffc0' }
|
16
|
+
|
17
|
+
gc = Draw.new
|
18
|
+
gc.annotate(legend, 0, 0, 0, 0, "Balloon Day!\\nFri May 2 2003") {
|
19
|
+
self.gravity = CenterGravity
|
20
|
+
self.stroke = 'transparent'
|
21
|
+
self.fill = 'white'
|
22
|
+
self.pointsize = 18
|
23
|
+
}
|
24
|
+
|
25
|
+
result = balloons.composite(legend, SouthGravity, OverCompositeOp)
|
26
|
+
|
27
|
+
puts "...Writing image_opacity.miff"
|
28
|
+
result.write 'image_opacity.miff'
|
29
|
+
exit
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#
|
2
|
+
# Demonstrate the export_pixels and import_pixels methods.
|
3
|
+
#
|
4
|
+
|
5
|
+
require 'RMagick'
|
6
|
+
include Magick
|
7
|
+
|
8
|
+
puts <<END_INFO
|
9
|
+
|
10
|
+
This example demonstrates the export_pixels and import_pixels methods
|
11
|
+
by copying an image one row at a time. The result is an copy that
|
12
|
+
is identical to the original.
|
13
|
+
|
14
|
+
END_INFO
|
15
|
+
|
16
|
+
img = Image.read('../doc/ex/images/Gold_Statue.jpg').first
|
17
|
+
copy = Image.new(img.columns, img.rows);
|
18
|
+
|
19
|
+
begin
|
20
|
+
img.rows.times { |r|
|
21
|
+
scanline = img.export_pixels(0, r, img.columns, 1, "RGB");
|
22
|
+
copy.import_pixels(0, r, img.columns, 1, "RGB", scanline);
|
23
|
+
}
|
24
|
+
rescue NotImplementedError
|
25
|
+
$stderr.puts "The export_pixels and import_pixels methods are not supported" +
|
26
|
+
" by this version of ImageMagick/GraphicsMagick"
|
27
|
+
exit
|
28
|
+
end
|
29
|
+
|
30
|
+
copy.write("copy.gif")
|
31
|
+
exit
|
@@ -0,0 +1,38 @@
|
|
1
|
+
|
2
|
+
# Demonstrate ImageMagick's new (5.5.7-3 and later) built-in patterns.
|
3
|
+
# Create a Fill class that can be reused to fill in new Image backgrounds.
|
4
|
+
|
5
|
+
# Usage: pattern_fill.rb <name-of-pattern>
|
6
|
+
# Try 'checkerboard' or 'verticalsaw'
|
7
|
+
|
8
|
+
require 'RMagick'
|
9
|
+
include Magick
|
10
|
+
|
11
|
+
puts <<END_INFO
|
12
|
+
|
13
|
+
This example demonstrates the PATTERN: image format, which is
|
14
|
+
new in ImageMagick 5.5.7. Specify the name of any of the
|
15
|
+
supported patterns as an argument. For example, try "checkerboard".
|
16
|
+
|
17
|
+
END_INFO
|
18
|
+
|
19
|
+
class PatternFill < Magick::TextureFill
|
20
|
+
def initialize(name='bricks')
|
21
|
+
@pat_img = Magick::Image.read("pattern:#{name}").first
|
22
|
+
super(@pat_img)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
if ARGV[0]
|
27
|
+
pattern = ARGV[0]
|
28
|
+
else
|
29
|
+
$stderr.puts "Defaulting to checkerboard pattern."
|
30
|
+
pattern = 'checkerboard'
|
31
|
+
end
|
32
|
+
|
33
|
+
# Create a sample image that is 100x bigger than the pattern.
|
34
|
+
attrs = Image.ping("pattern:#{pattern}").first
|
35
|
+
|
36
|
+
tryit = Image.new(10*attrs.columns, 10*attrs.rows, PatternFill.new(pattern))
|
37
|
+
tryit.write("pattern_fill.gif")
|
38
|
+
exit
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# Demonstrate the Draw#rotation= method by producing
|
2
|
+
# an animated MIFF file showing a rotating text string.
|
3
|
+
|
4
|
+
|
5
|
+
require 'RMagick'
|
6
|
+
include Magick
|
7
|
+
|
8
|
+
puts <<END_INFO
|
9
|
+
Demonstrate the rotation= attribute in the Draw class
|
10
|
+
by producing an animated image. View the output image
|
11
|
+
by entering the command: animate rotating_text.miff
|
12
|
+
END_INFO
|
13
|
+
|
14
|
+
text = Draw.new
|
15
|
+
text.pointsize = 28
|
16
|
+
text.font_weight = BoldWeight
|
17
|
+
text.font_style = ItalicStyle
|
18
|
+
text.gravity = CenterGravity
|
19
|
+
|
20
|
+
# Let's make it interesting. Composite the
|
21
|
+
# rotated text over a gradient fill background.
|
22
|
+
fill = GradientFill.new(100,100,100,100,"yellow","red")
|
23
|
+
bg = Image.new(200, 200, fill)
|
24
|
+
|
25
|
+
# The "none" color is transparent.
|
26
|
+
fg = Image.new(bg.columns, bg.rows) { self.background_color = "none" }
|
27
|
+
|
28
|
+
# Here's where we'll collect the individual frames.
|
29
|
+
animation = ImageList.new
|
30
|
+
|
31
|
+
0.step(345,15) { |degrees|
|
32
|
+
frame = fg.copy
|
33
|
+
text.annotate(frame, 0,0,0,0, "Rotating Text") {
|
34
|
+
self.rotation = degrees
|
35
|
+
}
|
36
|
+
# Composite the text over the gradient filled background frame.
|
37
|
+
animation << bg.composite(frame, CenterGravity, DisplaceCompositeOp)
|
38
|
+
}
|
39
|
+
|
40
|
+
animation.delay = 8
|
41
|
+
|
42
|
+
#animation.animate
|
43
|
+
puts "...Writing rotating_text.gif"
|
44
|
+
animation.write("rotating_text.gif")
|
45
|
+
exit
|
data/examples/spinner.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# Make a 32x32 animated GIF that resembles the OS X animation.
|
2
|
+
# This produces a very small (~2.6Kb) GIF file.
|
3
|
+
|
4
|
+
require 'RMagick'
|
5
|
+
|
6
|
+
puts <<END_INFO
|
7
|
+
This example creates an animated GIF that resembles the OS X "waiting" icon.
|
8
|
+
You can view the GIF with the command
|
9
|
+
|
10
|
+
animate spinner.gif
|
11
|
+
END_INFO
|
12
|
+
|
13
|
+
|
14
|
+
NFRAMES = 12 # number of frames in the animation
|
15
|
+
DIM = 32 # width & height of image in pixels
|
16
|
+
DELAY = 100.0 / (NFRAMES/2) # 2 rotations per second
|
17
|
+
|
18
|
+
# 'frame' is a single frame in the animation.
|
19
|
+
frame = Magick::Image.new(DIM, DIM) {self.background_color = 'transparent'}
|
20
|
+
|
21
|
+
# 'spinner' will contain the frames that make up the animated GIF
|
22
|
+
spinner = Magick::ImageList.new
|
23
|
+
|
24
|
+
# 'level' is the change from darkest gray to white
|
25
|
+
level = Magick::QuantumRange / 2 / NFRAMES
|
26
|
+
|
27
|
+
NFRAMES.times do |x|
|
28
|
+
gc = Magick::Draw.new
|
29
|
+
gc.translate(DIM/2, DIM/2)
|
30
|
+
gc.stroke('none')
|
31
|
+
intensity = 0.58 * Magick::QuantumRange
|
32
|
+
fill_color = Magick::Pixel.new(intensity, intensity, intensity).to_color
|
33
|
+
gc.fill(fill_color)
|
34
|
+
angle = x * (360/NFRAMES)
|
35
|
+
NFRAMES.times do
|
36
|
+
gc.rotate(angle)
|
37
|
+
intensity = [intensity, Magick::QuantumRange].min
|
38
|
+
fill_color = Magick::Pixel.new(intensity, intensity, intensity).to_color
|
39
|
+
gc.fill(fill_color)
|
40
|
+
gc.roundrectangle(7, -1, 15, 0, 1, 1)
|
41
|
+
angle = -(360/NFRAMES)
|
42
|
+
intensity += level
|
43
|
+
end
|
44
|
+
spinner << frame.copy
|
45
|
+
gc.draw(spinner)
|
46
|
+
end
|
47
|
+
|
48
|
+
spinner.delay = DELAY
|
49
|
+
spinner.compression = Magick::LZWCompression
|
50
|
+
spinner.write('spinner.gif')
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'RMagick'
|
2
|
+
include Magick
|
3
|
+
|
4
|
+
puts <<END_INFO
|
5
|
+
|
6
|
+
This example demonstrates how to make a thumbnail of an image.
|
7
|
+
An image is resized to the target size (retaining its original
|
8
|
+
aspect ratio, of course) and then "mounted" on a square background
|
9
|
+
with raised edges.
|
10
|
+
|
11
|
+
Usage:
|
12
|
+
|
13
|
+
ruby thumbnail.rb <filename <size>>
|
14
|
+
|
15
|
+
where `filename' is the name of an image file and `size' is the
|
16
|
+
size of the thumbnail in pixels. The default size is 120 pixels.
|
17
|
+
If you don't specify any arguments this script uses a default
|
18
|
+
image.
|
19
|
+
|
20
|
+
END_INFO
|
21
|
+
|
22
|
+
DEFAULT_SIZE = 120
|
23
|
+
|
24
|
+
case ARGV.length
|
25
|
+
when 2
|
26
|
+
size = ARGV[1].to_i
|
27
|
+
image = ARGV[0]
|
28
|
+
when 1
|
29
|
+
image = ARGV[0]
|
30
|
+
size = DEFAULT_SIZE
|
31
|
+
else
|
32
|
+
size = DEFAULT_SIZE
|
33
|
+
image = "../doc/ex/images/Flower_Hat.jpg"
|
34
|
+
end
|
35
|
+
|
36
|
+
geom = "#{size}x#{size}"
|
37
|
+
|
38
|
+
# Read the image and resize it. The `change_geometry' method
|
39
|
+
# computes the new image geometry and yields to a block. The
|
40
|
+
# return value of the block is the return value of the method.
|
41
|
+
|
42
|
+
img = Image.read(image)[0]
|
43
|
+
img.change_geometry!(geom) { |cols, rows| img.thumbnail! cols, rows }
|
44
|
+
|
45
|
+
# We need a background to display the thumbnail.
|
46
|
+
# Create a square, neutral gray background with raised edges.
|
47
|
+
# Make this background slightly larger than the image to allow
|
48
|
+
# for the raised border. A 3-pixel raised edge means that the
|
49
|
+
# background needs to be 6 pixels larger in each dimension.
|
50
|
+
|
51
|
+
bg = Image.new(size+6, size+6) { self.background_color = "gray75" }
|
52
|
+
bg = bg.raise(3,3)
|
53
|
+
|
54
|
+
# Just for the purposes of this example, display the thumbnail background on
|
55
|
+
# a larger white background.
|
56
|
+
|
57
|
+
white_bg = Image.new(size+50, size+50) {self.background_color = "white"}
|
58
|
+
white_bg = white_bg.composite(bg, CenterGravity, OverCompositeOp)
|
59
|
+
|
60
|
+
# Finally, center the thumbnail on the gray background.
|
61
|
+
thumbnail = white_bg.composite(img, CenterGravity, OverCompositeOp)
|
62
|
+
|
63
|
+
thumbnail.write("thumbnail.gif")
|
64
|
+
exit
|
65
|
+
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'RMagick'
|
2
|
+
include Magick
|
3
|
+
|
4
|
+
puts <<END_INFO
|
5
|
+
|
6
|
+
vi-gnette (n.) vin-'yet
|
7
|
+
A picture that shades off gradually into the surrounding paper.
|
8
|
+
Merriam-Webster Dictionary
|
9
|
+
|
10
|
+
Vignettes are frequently used in formal portraiture and advertising
|
11
|
+
images. This example creates a vignette from a picture of a ballerina.
|
12
|
+
It takes a few seconds to run. Be patient.
|
13
|
+
|
14
|
+
END_INFO
|
15
|
+
|
16
|
+
ballerina = Image.read("../doc/ex/images/Ballerina3.jpg")[0]
|
17
|
+
|
18
|
+
# Note: this technique won't work with every image. To make a pretty
|
19
|
+
# vignette you need an image with a uniform, fairly dark background.
|
20
|
+
|
21
|
+
# Start by drawing a white oval on a black background. (Although you don't
|
22
|
+
# have to use an oval at all! Any shape will work. Try a rounded rectangle.)
|
23
|
+
# The black pixels correspond to pixels in the image that will become
|
24
|
+
# transparent. The white pixels correspond to pixels in the image that will
|
25
|
+
# remain unchanged. Gray pixels, introduced by the blurring below, will
|
26
|
+
# become more or less transparent depending on how dark or light the pixel is.
|
27
|
+
|
28
|
+
# The size of the oval is arbitrary - in this case it's 90% of the
|
29
|
+
# size of the image.
|
30
|
+
|
31
|
+
oval = Image.new(ballerina.columns, ballerina.rows) {self.background_color = 'black'}
|
32
|
+
gc = Draw.new
|
33
|
+
gc.stroke('white')
|
34
|
+
gc.fill('white')
|
35
|
+
gc.ellipse(ballerina.columns/2, ballerina.rows/2,
|
36
|
+
ballerina.columns/2-(ballerina.columns*0.10),
|
37
|
+
ballerina.rows/2-(ballerina.rows*0.10), 0, 360)
|
38
|
+
gc.draw(oval)
|
39
|
+
|
40
|
+
# Add a lot of blurring to the oval. I use blur_image because it's much faster
|
41
|
+
# than the gaussian_blur method and produces no observable difference. The
|
42
|
+
# exact amount of blurring is a judgment call. The higher the 2nd argument, the
|
43
|
+
# more blurring, although increasing the value above 20 doesn't seem to add any
|
44
|
+
# additional blurriness.
|
45
|
+
|
46
|
+
oval = oval.blur_image(0, 20)
|
47
|
+
|
48
|
+
# The CopyOpacityCompositeOp transforms the opacity level of each image pixel
|
49
|
+
# according to the intensity of the composite image pixels. In this case, the
|
50
|
+
# black pixels outside the oval become transparent and the white pixels inside
|
51
|
+
# the oval remain opaque. Each gray pixel around the border of the oval has a
|
52
|
+
# varying level of transparency depending on how dark or light it is.
|
53
|
+
|
54
|
+
ballerina.matte = true # Ensure the ballerina image's opacity channel is enabled.
|
55
|
+
oval.matte = false # Force the CopyOpacityCompositeOp to use pixel intensity
|
56
|
+
# to determine how much transparency to add to the ballerina
|
57
|
+
# pixels.
|
58
|
+
|
59
|
+
ballerina = ballerina.composite(oval, CenterGravity, CopyOpacityCompositeOp)
|
60
|
+
|
61
|
+
# Since the vignette has multiple levels of transparency, we can't
|
62
|
+
# save it as a GIF or a JPEG. The PNG format can handle it, though.
|
63
|
+
|
64
|
+
begin
|
65
|
+
ballerina.write("vignette.png")
|
66
|
+
rescue ImageMagickError
|
67
|
+
puts "Write failed. No PNG support?"
|
68
|
+
# In case PNG support isn't installed, just ignore the exception.
|
69
|
+
end
|
70
|
+
|
71
|
+
# At this point the vignette is complete. However, the `display' method only
|
72
|
+
# supports 1`level of transparency. Therefore, composite the vignette over a
|
73
|
+
# standard "checkerboard" background. The resulting image will be 100% opaque.
|
74
|
+
|
75
|
+
checkerboard = Image.read("pattern:checkerboard") {self.size = "#{ballerina.columns}x#{ballerina.rows}"}
|
76
|
+
vignette = checkerboard[0].composite(ballerina, CenterGravity, OverCompositeOp)
|
77
|
+
vignette.display
|
78
|
+
exit
|
79
|
+
|
@@ -0,0 +1,180 @@
|
|
1
|
+
|
2
|
+
SHELL = /bin/sh
|
3
|
+
|
4
|
+
#### Start of system configuration section. ####
|
5
|
+
|
6
|
+
srcdir = .
|
7
|
+
topdir = /c/ruby19/include/ruby-1.9.1
|
8
|
+
hdrdir = /c/ruby19/include/ruby-1.9.1
|
9
|
+
arch_hdrdir = c:/ruby19/include/ruby-1.9.1/$(arch)
|
10
|
+
VPATH = $(srcdir):$(arch_hdrdir)/ruby:$(hdrdir)/ruby
|
11
|
+
|
12
|
+
DESTDIR = c:
|
13
|
+
prefix = $(DESTDIR)/ruby19
|
14
|
+
exec_prefix = $(prefix)
|
15
|
+
vendorhdrdir = $(rubyhdrdir)/vendor_ruby
|
16
|
+
sitehdrdir = $(rubyhdrdir)/site_ruby
|
17
|
+
rubyhdrdir = $(includedir)/$(RUBY_INSTALL_NAME)-$(ruby_version)
|
18
|
+
vendordir = $(libdir)/$(RUBY_INSTALL_NAME)/vendor_ruby
|
19
|
+
sitedir = $(libdir)/$(RUBY_INSTALL_NAME)/site_ruby
|
20
|
+
mandir = $(datarootdir)/man
|
21
|
+
localedir = $(datarootdir)/locale
|
22
|
+
libdir = $(exec_prefix)/lib
|
23
|
+
psdir = $(docdir)
|
24
|
+
pdfdir = $(docdir)
|
25
|
+
dvidir = $(docdir)
|
26
|
+
htmldir = $(docdir)
|
27
|
+
infodir = $(datarootdir)/info
|
28
|
+
docdir = $(datarootdir)/doc/$(PACKAGE)
|
29
|
+
oldincludedir = $(DESTDIR)/usr/include
|
30
|
+
includedir = $(prefix)/include
|
31
|
+
localstatedir = $(prefix)/var
|
32
|
+
sharedstatedir = $(prefix)/com
|
33
|
+
sysconfdir = $(prefix)/etc
|
34
|
+
datadir = $(datarootdir)
|
35
|
+
datarootdir = $(prefix)/share
|
36
|
+
libexecdir = $(exec_prefix)/libexec
|
37
|
+
sbindir = $(exec_prefix)/sbin
|
38
|
+
bindir = $(exec_prefix)/bin
|
39
|
+
rubylibdir = $(libdir)/$(ruby_install_name)/$(ruby_version)
|
40
|
+
archdir = $(rubylibdir)/$(arch)
|
41
|
+
sitelibdir = $(sitedir)/$(ruby_version)
|
42
|
+
sitearchdir = $(sitelibdir)/$(sitearch)
|
43
|
+
vendorlibdir = $(vendordir)/$(ruby_version)
|
44
|
+
vendorarchdir = $(vendorlibdir)/$(sitearch)
|
45
|
+
|
46
|
+
CC = gcc
|
47
|
+
CXX = g++
|
48
|
+
LIBRUBY = lib$(RUBY_SO_NAME).dll.a
|
49
|
+
LIBRUBY_A = lib$(RUBY_SO_NAME)-static.a
|
50
|
+
LIBRUBYARG_SHARED = -l$(RUBY_SO_NAME)
|
51
|
+
LIBRUBYARG_STATIC = -l$(RUBY_SO_NAME)-static
|
52
|
+
OUTFLAG = -o
|
53
|
+
COUTFLAG = -o
|
54
|
+
|
55
|
+
RUBY_EXTCONF_H = extconf.h
|
56
|
+
cflags = $(optflags) $(debugflags) $(warnflags)
|
57
|
+
optflags = -O2
|
58
|
+
debugflags = -g
|
59
|
+
warnflags = -Wall -Wno-parentheses
|
60
|
+
CFLAGS = $(cflags)
|
61
|
+
INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir)/ruby/backward -I$(hdrdir) -I$(srcdir)
|
62
|
+
DEFS =
|
63
|
+
CPPFLAGS = -DRUBY_EXTCONF_H=\"$(RUBY_EXTCONF_H)\" $(DEFS) $(cppflags)
|
64
|
+
CXXFLAGS = $(CFLAGS) $(cxxflags)
|
65
|
+
ldflags = -L.
|
66
|
+
dldflags = -Wl,--enable-auto-image-base,--enable-auto-import
|
67
|
+
archflag =
|
68
|
+
DLDFLAGS = $(ldflags) $(dldflags) $(archflag)
|
69
|
+
LDSHARED = gcc -shared $(if $(filter-out -g -g0,$(debugflags)),,-s)
|
70
|
+
LDSHAREDXX = g++ -shared $(if $(filter-out -g -g0,$(debugflags)),,-s)
|
71
|
+
AR = ar
|
72
|
+
EXEEXT = .exe
|
73
|
+
|
74
|
+
RUBY_INSTALL_NAME = ruby
|
75
|
+
RUBY_SO_NAME = msvcrt-ruby191
|
76
|
+
arch = i386-mingw32
|
77
|
+
sitearch = i386-msvcrt
|
78
|
+
ruby_version = 1.9.1
|
79
|
+
ruby = c:/ruby19/bin/ruby
|
80
|
+
RUBY = $(ruby)
|
81
|
+
RM = rm -f
|
82
|
+
RM_RF = $(RUBY) -run -e rm -- -rf
|
83
|
+
RMDIRS = $(RUBY) -run -e rmdir -- -p
|
84
|
+
MAKEDIRS = install -d
|
85
|
+
INSTALL = /bin/install -c
|
86
|
+
INSTALL_PROG = $(INSTALL) -m 0755
|
87
|
+
INSTALL_DATA = $(INSTALL) -m 644
|
88
|
+
COPY = cp
|
89
|
+
|
90
|
+
#### End of system configuration section. ####
|
91
|
+
|
92
|
+
preload =
|
93
|
+
|
94
|
+
libpath = . $(libdir)
|
95
|
+
LIBPATH = -L. -L$(libdir)
|
96
|
+
DEFFILE =
|
97
|
+
|
98
|
+
CLEANFILES = mkmf.log
|
99
|
+
DISTCLEANFILES =
|
100
|
+
DISTCLEANDIRS =
|
101
|
+
|
102
|
+
extout =
|
103
|
+
extout_prefix =
|
104
|
+
target_prefix =
|
105
|
+
LOCAL_LIBS = -lCORE_RL_magick_ -lX11
|
106
|
+
LIBS = $(LIBRUBYARG_SHARED) -lshell32 -lws2_32
|
107
|
+
SRCS = rmagick.c rmdraw.c rmenum.c rmfill.c rmilist.c rmimage.c rminfo.c rmmain.c rmmontage.c rmpixel.c rmstruct.c rmutil.c
|
108
|
+
OBJS = rmagick.o rmdraw.o rmenum.o rmfill.o rmilist.o rmimage.o rminfo.o rmmain.o rmmontage.o rmpixel.o rmstruct.o rmutil.o
|
109
|
+
TARGET = RMagick2
|
110
|
+
DLLIB = $(TARGET).so
|
111
|
+
EXTSTATIC =
|
112
|
+
STATIC_LIB =
|
113
|
+
|
114
|
+
BINDIR = $(bindir)
|
115
|
+
RUBYCOMMONDIR = $(sitedir)$(target_prefix)
|
116
|
+
RUBYLIBDIR = $(sitelibdir)$(target_prefix)
|
117
|
+
RUBYARCHDIR = $(sitearchdir)$(target_prefix)
|
118
|
+
HDRDIR = $(rubyhdrdir)/ruby$(target_prefix)
|
119
|
+
ARCHHDRDIR = $(rubyhdrdir)/$(arch)/ruby$(target_prefix)
|
120
|
+
|
121
|
+
TARGET_SO = $(DLLIB)
|
122
|
+
CLEANLIBS = $(TARGET).so
|
123
|
+
CLEANOBJS = *.o *.bak
|
124
|
+
|
125
|
+
all: $(DLLIB)
|
126
|
+
static: $(STATIC_LIB)
|
127
|
+
|
128
|
+
clean-rb-default::
|
129
|
+
clean-rb::
|
130
|
+
clean-so::
|
131
|
+
clean: clean-so clean-rb-default clean-rb
|
132
|
+
@-$(RM) $(CLEANLIBS) $(CLEANOBJS) $(CLEANFILES)
|
133
|
+
|
134
|
+
distclean-rb-default::
|
135
|
+
distclean-rb::
|
136
|
+
distclean-so::
|
137
|
+
distclean: clean distclean-so distclean-rb-default distclean-rb
|
138
|
+
@-$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
|
139
|
+
@-$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES)
|
140
|
+
@-$(RMDIRS) $(DISTCLEANDIRS)
|
141
|
+
|
142
|
+
realclean: distclean
|
143
|
+
install: install-so install-rb
|
144
|
+
|
145
|
+
install-so: $(RUBYARCHDIR)
|
146
|
+
install-so: $(RUBYARCHDIR)/$(DLLIB)
|
147
|
+
$(RUBYARCHDIR)/$(DLLIB): $(DLLIB)
|
148
|
+
$(INSTALL_PROG) $(DLLIB) $(RUBYARCHDIR)
|
149
|
+
install-rb: pre-install-rb install-rb-default
|
150
|
+
install-rb-default: pre-install-rb-default
|
151
|
+
pre-install-rb: Makefile
|
152
|
+
pre-install-rb-default: Makefile
|
153
|
+
$(RUBYARCHDIR):
|
154
|
+
$(MAKEDIRS) $@
|
155
|
+
|
156
|
+
site-install: site-install-so site-install-rb
|
157
|
+
site-install-so: install-so
|
158
|
+
site-install-rb: install-rb
|
159
|
+
|
160
|
+
.SUFFIXES: .c .m .cc .cxx .cpp .o
|
161
|
+
|
162
|
+
.cc.o:
|
163
|
+
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<
|
164
|
+
|
165
|
+
.cxx.o:
|
166
|
+
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<
|
167
|
+
|
168
|
+
.cpp.o:
|
169
|
+
$(CXX) $(INCFLAGS) $(CPPFLAGS) $(CXXFLAGS) $(COUTFLAG)$@ -c $<
|
170
|
+
|
171
|
+
.c.o:
|
172
|
+
$(CC) $(INCFLAGS) $(CPPFLAGS) $(CFLAGS) $(COUTFLAG)$@ -c $<
|
173
|
+
|
174
|
+
$(DLLIB): $(OBJS) Makefile
|
175
|
+
@-$(RM) $(@)
|
176
|
+
$(LDSHARED) -o $@ $(OBJS) $(LIBPATH) $(DLDFLAGS) $(LOCAL_LIBS) $(LIBS)
|
177
|
+
|
178
|
+
|
179
|
+
|
180
|
+
$(OBJS): $(hdrdir)/ruby.h $(hdrdir)/ruby/defines.h Makefile rmagick.h $(RUBY_EXTCONF_H)
|