- Modifications to compile ImageMagick
108
ImageMagick/PerlMagick/Changelog
Normal file
|
@ -0,0 +1,108 @@
|
|||
2011-12-25 6.7.4-2 Cristy <quetzlzacatenango@image...>
|
||||
* Relax when PerlMagick tosses an image when an exception is thrown.
|
||||
|
||||
2011-12-20 6.7.4-1 Cristy <quetzlzacatenango@image...>
|
||||
* Use PTR2IV() and INT2PTR() macros to avoid int to ptr cast messages.
|
||||
|
||||
2011-08-25 6.7.2-0 Cristy <quetzlzacatenango@image...>
|
||||
* Fix fault for Thumbnail() with GIF animation (problem report and patch
|
||||
from Shigeki Morimoto).
|
||||
|
||||
2011-08-09 6.7.1-4 Cristy <quetzlzacatenango@image...>
|
||||
* Add a simple "ignore this type" style typemap to get past a xsubpp
|
||||
exception in recent versions of Perl.
|
||||
|
||||
2011-06-06 6.7.0-5 Cristy <quetzlzacatenango@image...>
|
||||
* Set modulate() colorspace predicated on parameter (e.g. brightness is HSB).
|
||||
|
||||
2011-01-25 6.6.7-3 Cristy <quetzlzacatenango@image...>
|
||||
* Verify color parameter is a Perl array to avoid seg fault (reference
|
||||
http://www.imagemagick.org/discourse-server/viewtopic.php?f=7&t=17928).
|
||||
|
||||
2010-11-11 6.6.5-6 Cristy <quetzlzacatenango@image...>
|
||||
* Check that image exists before accessing its member (reference
|
||||
http://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=17502).
|
||||
|
||||
2010-11-01 6.6.5-6 Cristy <quetzlzacatenango@image...>
|
||||
* The gravity attribute must set the ImageInfo gravity property (reference
|
||||
http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=17282).
|
||||
|
||||
2009-12-08 6.5.8-5 <kmx@volny...>
|
||||
* A couple of minor changes to Makefile.PL to support Strawberry Perl.
|
||||
|
||||
2009-12-06 6.5.8-4 Cristy <quetzlzacatenango@image...>
|
||||
* Support the crop() gravity option.
|
||||
|
||||
2009-11-23 6.5.8-0 Cristy <quetzlzacatenango@image...>
|
||||
* Add 'dither' option to Remap().
|
||||
|
||||
2009-10-18 6.5.7-0 Cristy <quetzlzacatenango@image...>
|
||||
* Interpret gravity properly for ExtentImage().
|
||||
* Support the Modulate() method parameter, 'lightness.'
|
||||
|
||||
2009-10-08 6.5.6-10 <kmx@volny...>
|
||||
* Improve PerlMagick.PL to work with Strawberry Perl under Windows.
|
||||
|
||||
2009-08-02 6.5.4-8 Cristy <quetzlzacatenango@image...>
|
||||
* Create a image registry to track which image objects must be cloned
|
||||
when a Perl thread is created.
|
||||
|
||||
2009-06-14 6.5.3-7 Anthony Thyssen <A.Thyssen@griffith...>
|
||||
* Expand PerlMagick Composite() 'mask' merge for both compose 'displace'
|
||||
and new 'distort' mapping (absolute lookup)
|
||||
|
||||
2009-06-11 6.5.3-5 Anthony Thyssen <A.Thyssen@griffith...>
|
||||
* Fixed PerlMagick Composite() for correct merging of 'mask' image into
|
||||
the overlay image for Displacement Mapping Composition.
|
||||
|
||||
2009-06-02 6.5.3-2 Cristy <quetzlzacatenango@image...>
|
||||
* Fix filename parameter in Read() (e.g. $image->Read(filename=>'xc:white')).
|
||||
2009-04-14 6.5.1-3 Cristy <quetzlzacatenango@image...>
|
||||
* Support magick parameter for Read() (e.g.
|
||||
$im->Read( file => $fh, magick +> 'text:' )).
|
||||
|
||||
2008-11-16 6.4.4-5 Cristy <quetzlzacatenango@image...>
|
||||
* Statistics() returns normalized values.
|
||||
|
||||
2008-10-16 6.4.4-9 Michael.Kroell <michael.kroell@gmail...>
|
||||
* Check if Image::Magick::constant is defined in AUTOLOAD() function.
|
||||
|
||||
2008-06-07 6.4.1-9 Cristy <quetzlzacatenango@image...>
|
||||
* Permit settings of the form:
|
||||
$image->Set("quantum:polarity","min-is-white").
|
||||
|
||||
2008-04-07 6.4.0-5 Cristy <quetzlzacatenango@image...>
|
||||
* X11 regression test passed if the DISPLAY variable is not defined (reference
|
||||
http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=10979).
|
||||
* Make regression test, x11/write.t, exit after 8 seconds as stated (reference
|
||||
http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=10979).
|
||||
|
||||
2007-11-07 6.3.7-0 Cristy <quetzlzacatenango@image...>
|
||||
* Added gravity attribute to Transform() method.
|
||||
|
||||
2007-09-12 6.3.5-9 Cristy <quetzlzacatenango@image...>
|
||||
* Added GetPixel()/SetPixel() methods.
|
||||
|
||||
2007-06-22 6.3.4-2 grafman <grafman@graphcomp.com>
|
||||
* Add GetImagePixels to return C pointer for image cache.
|
||||
* Add SyncImagePixels to sync image cache.
|
||||
* Add Quantum parameter to Get API to return Quantum-Depth.
|
||||
|
||||
2007-06-21 6.3.4-1 Cristy <quetzlzacatenango@image...>
|
||||
* Add Distort.
|
||||
|
||||
2007-03-20 6.3.3-3 Cristy <quetzlzacatenango@image...>
|
||||
* Add vector-graphics parameter to the Draw() method.
|
||||
|
||||
blob length was not being set properly).
|
||||
2007-03-11 6.3.3-2 Cristy <quetzlzacatenango@image...>
|
||||
* Read(blob=>$blob) and Ping(blob=>$blob) sometimes failed because the
|
||||
blob length was not being set properly).
|
||||
|
||||
2007-01-23 cristy <cristy@virgi...>
|
||||
|
||||
* Add parameters fill-pattern and stroke-pattern to Annotate() and Draw().
|
||||
|
||||
2005-01-10 cristy <cristy@virgi...>
|
||||
* Added normalize parameter to GetPixels(). Use normalize=>'true' to return
|
||||
normalized pixel values.
|
558
ImageMagick/PerlMagick/MANIFEST
Normal file
|
@ -0,0 +1,558 @@
|
|||
Changelog
|
||||
check.sh.in
|
||||
demo/annotate.pl
|
||||
demo/button.pl
|
||||
demo/compose-specials.pl
|
||||
demo/composite.pl
|
||||
demo/demo.pl
|
||||
demo/dst.png
|
||||
demo/Generic.ttf
|
||||
demo/lsys.pl
|
||||
demo/Makefile
|
||||
demo/model.gif
|
||||
demo/piddle.pl
|
||||
demo/pink-flower.gif
|
||||
demo/pixel-fx.pl
|
||||
demo/README
|
||||
demo/red-flower.gif
|
||||
demo/shadow-text.pl
|
||||
demo/shapes.pl
|
||||
demo/single-pixels.pl
|
||||
demo/smile.gif
|
||||
demo/src.png
|
||||
demo/steganography.pl
|
||||
demo/tile.gif
|
||||
demo/tree.pl
|
||||
demo/Turtle.pm
|
||||
demo/yellow-flower.gif
|
||||
Magick.pm
|
||||
Magick.pm.in
|
||||
Magick.xs
|
||||
Makefile.am
|
||||
Makefile.nt
|
||||
Makefile.PL
|
||||
Makefile.PL.in
|
||||
MANIFEST
|
||||
MANIFEST.SKIP
|
||||
README.txt
|
||||
t/blob.t
|
||||
t/bzlib/input.miff
|
||||
t/bzlib/read.t
|
||||
t/bzlib/write.t
|
||||
t/cgm/input.cgm
|
||||
t/cgm/read.t
|
||||
t/composite.t
|
||||
t/filter.t
|
||||
t/fpx/input_256.fpx
|
||||
t/fpx/input_bw.fpx
|
||||
t/fpx/input_grayscale.fpx
|
||||
t/fpx/input_jpeg.fpx
|
||||
t/fpx/input_truecolor.fpx
|
||||
t/fpx/read.t
|
||||
t/fpx/write.t
|
||||
t/getattribute.t
|
||||
t/hdf/input_256.hdf
|
||||
t/hdf/input_truecolor.hdf
|
||||
t/hdf/read.t
|
||||
t/hdf/write.t
|
||||
t/hpgl/input.hpgl
|
||||
t/hpgl/read.t
|
||||
t/input_16.miff
|
||||
t/input_70x46.cmyk
|
||||
t/input_70x46.gray
|
||||
t/input_70x46.rgb
|
||||
t/input_70x46.rgba
|
||||
t/input_70x46.uyvy
|
||||
t/input_70x46.yuv
|
||||
t/input.avs
|
||||
t/input.bie
|
||||
t/input.bmp
|
||||
t/input.bmp24
|
||||
t/input.dcx
|
||||
t/input.dib
|
||||
t/input.fits
|
||||
t/input.gif
|
||||
t/input.gif87
|
||||
t/input_gray_lsb_08bit.mat
|
||||
t/input_gray_lsb_double.mat
|
||||
t/input_gray_msb_08bit.mat
|
||||
t/input.ico
|
||||
t/input.im1
|
||||
t/input.im24
|
||||
t/input.im8
|
||||
t/input.mat
|
||||
t/input.miff
|
||||
t/input.mtv
|
||||
t/input_p1.pbm
|
||||
t/input_p2.pgm
|
||||
t/input_p3.ppm
|
||||
t/input_p4.pbm
|
||||
t/input_p5.pgm
|
||||
t/input_p6.ppm
|
||||
t/input.p7
|
||||
t/input_p7.p7
|
||||
t/input.pcx
|
||||
t/input.pict
|
||||
t/input.psd
|
||||
t/input_rgb_lsb_08bit.mat
|
||||
t/input.rle
|
||||
t/input.sgi
|
||||
t/input.tga
|
||||
t/input.tim
|
||||
t/input.viff
|
||||
t/input.wbmp
|
||||
t/input.wpg
|
||||
t/input.xbm
|
||||
t/input.xpm
|
||||
t/jbig/input.jbig
|
||||
t/jbig/read.t
|
||||
t/jbig/write.t
|
||||
t/jng/input_gray_idat.jng
|
||||
t/jng/input_gray_jdaa.jng
|
||||
t/jng/input_gray.jng
|
||||
t/jng/input_gray_prog_idat.jng
|
||||
t/jng/input_gray_prog_jdaa.jng
|
||||
t/jng/input_gray_prog.jng
|
||||
t/jng/input_idat.jng
|
||||
t/jng/input_jdaa.jng
|
||||
t/jng/input_prog_idat.jng
|
||||
t/jng/input_prog_jdaa.jng
|
||||
t/jng/input_prog.jng
|
||||
t/jng/input_rose.jng
|
||||
t/jng/read.t
|
||||
t/jng/write.t
|
||||
t/jp2/input.jp2
|
||||
t/jp2/input.jpc
|
||||
t/jp2/input.pgx
|
||||
t/jp2/read.t
|
||||
t/jpeg/input.jpg
|
||||
t/jpeg/input_plane.jpg
|
||||
t/jpeg/read.t
|
||||
t/jpeg/write.t
|
||||
t/MasterImage_70x46.ppm
|
||||
t/montage.t
|
||||
t/mpeg/input.m2v
|
||||
t/mpeg/input.mpg
|
||||
t/mpeg/read.t
|
||||
t/ping.t
|
||||
t/png/input_16.png
|
||||
t/png/input_256.png
|
||||
t/png/input_bw.png
|
||||
t/png/input.mng
|
||||
t/png/input_mono.png
|
||||
t/png/input_truecolor.png
|
||||
t/png/read-16.t
|
||||
t/png/read.t
|
||||
t/png/write-16.t
|
||||
t/png/write.t
|
||||
t/ps/input.eps
|
||||
t/ps/input.miff
|
||||
t/ps/input.ps
|
||||
t/ps/read.t
|
||||
t/ps/write.t
|
||||
t/rad/input.rad
|
||||
t/rad/read.t
|
||||
t/rad/write.t
|
||||
t/read.t
|
||||
t/reference/cgm/read.miff
|
||||
t/reference/composite/Add.miff
|
||||
t/reference/composite/Atop.miff
|
||||
t/reference/composite/Bumpmap.miff
|
||||
t/reference/composite/Clear.miff
|
||||
t/reference/composite/CopyBlue.miff
|
||||
t/reference/composite/CopyGreen.miff
|
||||
t/reference/composite/Copy.miff
|
||||
t/reference/composite/CopyOpacity.miff
|
||||
t/reference/composite/CopyRed.miff
|
||||
t/reference/composite/Difference.miff
|
||||
t/reference/composite/In.miff
|
||||
t/reference/composite/Minus.miff
|
||||
t/reference/composite/Multiply.miff
|
||||
t/reference/composite/Out.miff
|
||||
t/reference/composite/Over.miff
|
||||
t/reference/composite/Plus.miff
|
||||
t/reference/composite/Rotate.miff
|
||||
t/reference/composite/Subtract.miff
|
||||
t/reference/composite/Xor.miff
|
||||
t/reference/filter/AdaptiveThreshold.miff
|
||||
t/reference/filter/Annotate.miff
|
||||
t/reference/filter/Blur.miff
|
||||
t/reference/filter/Border.miff
|
||||
t/reference/filter/Channel.miff
|
||||
t/reference/filter/Charcoal.miff
|
||||
t/reference/filter/Chop.miff
|
||||
t/reference/filter/ColorFloodfill.miff
|
||||
t/reference/filter/Colorize.miff
|
||||
t/reference/filter/Contrast.miff
|
||||
t/reference/filter/Convolve.miff
|
||||
t/reference/filter/Crop.miff
|
||||
t/reference/filter/Despeckle.miff
|
||||
t/reference/filter/Draw.miff
|
||||
t/reference/filter/Edge.miff
|
||||
t/reference/filter/Emboss.miff
|
||||
t/reference/filter/Equalize.miff
|
||||
t/reference/filter/Flip.miff
|
||||
t/reference/filter/Flop.miff
|
||||
t/reference/filter/Frame.miff
|
||||
t/reference/filter/Gamma.miff
|
||||
t/reference/filter/GaussianBlur.miff
|
||||
t/reference/filter/Implode.miff
|
||||
t/reference/filter/Level.miff
|
||||
t/reference/filter/Magnify.miff
|
||||
t/reference/filter/MatteFloodfill.miff
|
||||
t/reference/filter/MedianFilter.miff
|
||||
t/reference/filter/Minify.miff
|
||||
t/reference/filter/Modulate.miff
|
||||
t/reference/filter/MotionBlur.miff
|
||||
t/reference/filter/Negate.miff
|
||||
t/reference/filter/Normalize.miff
|
||||
t/reference/filter/OilPaint.miff
|
||||
t/reference/filter/Opaque.miff
|
||||
t/reference/filter/Quantize.miff
|
||||
t/reference/filter/QuantizeMono.miff
|
||||
t/reference/filter/RadialBlur.miff
|
||||
t/reference/filter/Raise.miff
|
||||
t/reference/filter/ReduceNoise.miff
|
||||
t/reference/filter/Resize.miff
|
||||
t/reference/filter/Roll.miff
|
||||
t/reference/filter/Rotate.miff
|
||||
t/reference/filter/Sample.miff
|
||||
t/reference/filter/Scale.miff
|
||||
t/reference/filter/Segment.miff
|
||||
t/reference/filter/Set.miff
|
||||
t/reference/filter/Shade.miff
|
||||
t/reference/filter/Sharpen.miff
|
||||
t/reference/filter/Shave.miff
|
||||
t/reference/filter/Shear.miff
|
||||
t/reference/filter/SigmoidalContrast.miff
|
||||
t/reference/filter/Solarize.miff
|
||||
t/reference/filter/Swirl.miff
|
||||
t/reference/filter/Threshold.miff
|
||||
t/reference/filter/Trim.miff
|
||||
t/reference/filter/UnsharpMask.miff
|
||||
t/reference/filter/Wave.miff
|
||||
t/reference/jng/gray_idat_tmp.miff
|
||||
t/reference/jng/gray_jdaa_tmp.miff
|
||||
t/reference/jng/gray_prog_idat_tmp.miff
|
||||
t/reference/jng/gray_prog_jdaa_tmp.miff
|
||||
t/reference/jng/gray_prog_tmp.miff
|
||||
t/reference/jng/gray_tmp.miff
|
||||
t/reference/jng/idat_tmp.miff
|
||||
t/reference/jng/input_gray_idat.miff
|
||||
t/reference/jng/input_gray_jdaa.miff
|
||||
t/reference/jng/input_gray.miff
|
||||
t/reference/jng/input_gray_prog_idat.miff
|
||||
t/reference/jng/input_gray_prog_jdaa.miff
|
||||
t/reference/jng/input_gray_prog.miff
|
||||
t/reference/jng/input_idat.miff
|
||||
t/reference/jng/input_jdaa.miff
|
||||
t/reference/jng/input_prog_idat.miff
|
||||
t/reference/jng/input_prog_jdaa.miff
|
||||
t/reference/jng/input_prog.miff
|
||||
t/reference/jng/input_rose.miff
|
||||
t/reference/jng/jdaa_tmp.miff
|
||||
t/reference/jng/prog_idat_tmp.miff
|
||||
t/reference/jng/prog_jdaa_tmp.miff
|
||||
t/reference/jng/prog_tmp.miff
|
||||
t/reference/jng/read_gray_idat.miff
|
||||
t/reference/jng/read_gray_jdaa.miff
|
||||
t/reference/jng/read_gray.miff
|
||||
t/reference/jng/read_gray_prog_idat.miff
|
||||
t/reference/jng/read_gray_prog_jdaa.miff
|
||||
t/reference/jng/read_gray_prog.miff
|
||||
t/reference/jng/read_idat.miff
|
||||
t/reference/jng/read_jdaa.miff
|
||||
t/reference/jng/read_prog_idat.miff
|
||||
t/reference/jng/read_prog_jdaa.miff
|
||||
t/reference/jng/read_prog.miff
|
||||
t/reference/jng/write_gray_idat.miff
|
||||
t/reference/jng/write_gray_jdaa.miff
|
||||
t/reference/jng/write_gray.miff
|
||||
t/reference/jng/write_gray_prog_idat.miff
|
||||
t/reference/jng/write_gray_prog_jdaa.miff
|
||||
t/reference/jng/write_gray_prog.miff
|
||||
t/reference/jng/write_idat.miff
|
||||
t/reference/jng/write_jdaa.miff
|
||||
t/reference/jng/write_prog_idat.miff
|
||||
t/reference/jng/write_prog_jdaa.miff
|
||||
t/reference/jng/write_prog.miff
|
||||
t/reference/jp2/read_jp2.miff
|
||||
t/reference/jp2/read_jpc.miff
|
||||
t/reference/jp2/read_pgx.miff
|
||||
t/reference/jpeg/read_non_interlaced.miff
|
||||
t/reference/jpeg/read_plane_interlaced.miff
|
||||
t/reference/jpeg/write_non_interlaced.miff
|
||||
t/reference/jpeg/write_plane_interlaced.miff
|
||||
t/reference/read/gradient.miff
|
||||
t/reference/read/granite.miff
|
||||
t/reference/read/input_avs.miff
|
||||
t/reference/read/input_bmp24.miff
|
||||
t/reference/read/input_bmp.miff
|
||||
t/reference/read/input_cmyk.miff
|
||||
t/reference/read/input_dcx.miff
|
||||
t/reference/read/input_dib.miff
|
||||
t/reference/read/input_fits.miff
|
||||
t/reference/read/input_gif87.miff
|
||||
t/reference/read/input_gif.miff
|
||||
t/reference/read/input_gray_lsb_08bit_mat.miff
|
||||
t/reference/read/input_gray_lsb_double_mat.miff
|
||||
t/reference/read/input_gray.miff
|
||||
t/reference/read/input_gray_msb_08bit_mat.miff
|
||||
t/reference/read/input_ico.miff
|
||||
t/reference/read/input_im1.miff
|
||||
t/reference/read/input_im24.miff
|
||||
t/reference/read/input_im8.miff
|
||||
t/reference/read/input_mat.miff
|
||||
t/reference/read/input_miff.miff
|
||||
t/reference/read/input_mtv.miff
|
||||
t/reference/read/input_null_black.miff
|
||||
t/reference/read/input_null_DarkOrange.miff
|
||||
t/reference/read/input_null_white.miff
|
||||
t/reference/read/input_p7.miff
|
||||
t/reference/read/input_pbm_p1.miff
|
||||
t/reference/read/input_pbm_p4.miff
|
||||
t/reference/read/input_pcx.miff
|
||||
t/reference/read/input_pgm_p2.miff
|
||||
t/reference/read/input_pgm_p5.miff
|
||||
t/reference/read/input_pict.miff
|
||||
t/reference/read/input_ppm_p3.miff
|
||||
t/reference/read/input_ppm_p6.miff
|
||||
t/reference/read/input_psd.miff
|
||||
t/reference/read/input_rgba.miff
|
||||
t/reference/read/input_rgb_lsb_08bit_mat.miff
|
||||
t/reference/read/input_rgb.miff
|
||||
t/reference/read/input_rle.miff
|
||||
t/reference/read/input_sgi.miff
|
||||
t/reference/read/input_tga.miff
|
||||
t/reference/read/input_tile.miff
|
||||
t/reference/read/input_tim.miff
|
||||
t/reference/read/input_uyvy.miff
|
||||
t/reference/read/input_viff.miff
|
||||
t/reference/read/input_wbmp.miff
|
||||
t/reference/read/input_wpg.miff
|
||||
t/reference/read/input_xbm.miff
|
||||
t/reference/read/input_xc_black.miff
|
||||
t/reference/read/input_xpm.miff
|
||||
t/reference/read/input_xwd.miff
|
||||
t/reference/ttf/annotate.miff
|
||||
t/reference/ttf/label.miff
|
||||
t/reference/ttf/read.miff
|
||||
t/reference/wmf/clock.miff
|
||||
t/reference/wmf/wizard.miff
|
||||
t/reference/write/cgm/read.miff
|
||||
t/reference/write/composite/Add.miff
|
||||
t/reference/write/composite/Atop.miff
|
||||
t/reference/write/composite/Bumpmap.miff
|
||||
t/reference/write/composite/Clear.miff
|
||||
t/reference/write/composite/CopyBlue.miff
|
||||
t/reference/write/composite/CopyGreen.miff
|
||||
t/reference/write/composite/Copy.miff
|
||||
t/reference/write/composite/CopyOpacity.miff
|
||||
t/reference/write/composite/CopyRed.miff
|
||||
t/reference/write/composite/Difference.miff
|
||||
t/reference/write/composite/In.miff
|
||||
t/reference/write/composite/Minus.miff
|
||||
t/reference/write/composite/Multiply.miff
|
||||
t/reference/write/composite/Out.miff
|
||||
t/reference/write/composite/Over.miff
|
||||
t/reference/write/composite/Plus.miff
|
||||
t/reference/write/composite/Rotate.miff
|
||||
t/reference/write/composite/Subtract.miff
|
||||
t/reference/write/composite/Xor.miff
|
||||
t/reference/write/filter/AdaptiveThreshold.miff
|
||||
t/reference/write/filter/Annotate.miff
|
||||
t/reference/write/filter/Blur.miff
|
||||
t/reference/write/filter/Border.miff
|
||||
t/reference/write/filter/Channel.miff
|
||||
t/reference/write/filter/Charcoal.miff
|
||||
t/reference/write/filter/Chop.miff
|
||||
t/reference/write/filter/ColorFloodfill.miff
|
||||
t/reference/write/filter/Colorize.miff
|
||||
t/reference/write/filter/Contrast.miff
|
||||
t/reference/write/filter/Convolve.miff
|
||||
t/reference/write/filter/Crop.miff
|
||||
t/reference/write/filter/Despeckle.miff
|
||||
t/reference/write/filter/Draw.miff
|
||||
t/reference/write/filter/Edge.miff
|
||||
t/reference/write/filter/Emboss.miff
|
||||
t/reference/write/filter/Equalize.miff
|
||||
t/reference/write/filter/Flip.miff
|
||||
t/reference/write/filter/Flop.miff
|
||||
t/reference/write/filter/Frame.miff
|
||||
t/reference/write/filter/Gamma.miff
|
||||
t/reference/write/filter/GaussianBlur.miff
|
||||
t/reference/write/filter/Implode.miff
|
||||
t/reference/write/filter/Level.miff
|
||||
t/reference/write/filter/Magnify.miff
|
||||
t/reference/write/filter/MatteFloodfill.miff
|
||||
t/reference/write/filter/MedianFilter.miff
|
||||
t/reference/write/filter/Minify.miff
|
||||
t/reference/write/filter/Modulate.miff
|
||||
t/reference/write/filter/MotionBlur.miff
|
||||
t/reference/write/filter/Negate.miff
|
||||
t/reference/write/filter/Normalize.miff
|
||||
t/reference/write/filter/OilPaint.miff
|
||||
t/reference/write/filter/Opaque.miff
|
||||
t/reference/write/filter/Quantize.miff
|
||||
t/reference/write/filter/RadialBlur.miff
|
||||
t/reference/write/filter/Raise.miff
|
||||
t/reference/write/filter/ReduceNoise.miff
|
||||
t/reference/write/filter/Resize.miff
|
||||
t/reference/write/filter/Roll.miff
|
||||
t/reference/write/filter/Rotate.miff
|
||||
t/reference/write/filter/Sample.miff
|
||||
t/reference/write/filter/Scale.miff
|
||||
t/reference/write/filter/Segment.miff
|
||||
t/reference/write/filter/Set.miff
|
||||
t/reference/write/filter/Shade.miff
|
||||
t/reference/write/filter/Sharpen.miff
|
||||
t/reference/write/filter/Shave.miff
|
||||
t/reference/write/filter/Shear.miff
|
||||
t/reference/write/filter/SigmoidalContrast.miff
|
||||
t/reference/write/filter/Solarize.miff
|
||||
t/reference/write/filter/Swirl.miff
|
||||
t/reference/write/filter/Threshold.miff
|
||||
t/reference/write/filter/Trim.miff
|
||||
t/reference/write/filter/UnsharpMask.miff
|
||||
t/reference/write/filter/Wave.miff
|
||||
t/reference/write/jng/gray_idat_tmp.miff
|
||||
t/reference/write/jng/gray_jdaa_tmp.miff
|
||||
t/reference/write/jng/gray_prog_idat_tmp.miff
|
||||
t/reference/write/jng/gray_prog_jdaa_tmp.miff
|
||||
t/reference/write/jng/gray_prog_tmp.miff
|
||||
t/reference/write/jng/gray_tmp.miff
|
||||
t/reference/write/jng/idat_tmp.miff
|
||||
t/reference/write/jng/input_gray_idat.miff
|
||||
t/reference/write/jng/input_gray_jdaa.miff
|
||||
t/reference/write/jng/input_gray.miff
|
||||
t/reference/write/jng/input_gray_prog_idat.miff
|
||||
t/reference/write/jng/input_gray_prog_jdaa.miff
|
||||
t/reference/write/jng/input_gray_prog.miff
|
||||
t/reference/write/jng/input_idat.miff
|
||||
t/reference/write/jng/input_jdaa.miff
|
||||
t/reference/write/jng/input_prog_idat.miff
|
||||
t/reference/write/jng/input_prog_jdaa.miff
|
||||
t/reference/write/jng/input_prog.miff
|
||||
t/reference/write/jng/input_rose.miff
|
||||
t/reference/write/jng/jdaa_tmp.miff
|
||||
t/reference/write/jng/prog_idat_tmp.miff
|
||||
t/reference/write/jng/prog_jdaa_tmp.miff
|
||||
t/reference/write/jng/prog_tmp.miff
|
||||
t/reference/write/jng/read_gray_idat.miff
|
||||
t/reference/write/jng/read_gray_jdaa.miff
|
||||
t/reference/write/jng/read_gray.miff
|
||||
t/reference/write/jng/read_gray_prog_idat.miff
|
||||
t/reference/write/jng/read_gray_prog_jdaa.miff
|
||||
t/reference/write/jng/read_gray_prog.miff
|
||||
t/reference/write/jng/read_idat.miff
|
||||
t/reference/write/jng/read_jdaa.miff
|
||||
t/reference/write/jng/read_prog_idat.miff
|
||||
t/reference/write/jng/read_prog_jdaa.miff
|
||||
t/reference/write/jng/read_prog.miff
|
||||
t/reference/write/jng/write_gray_idat.miff
|
||||
t/reference/write/jng/write_gray_jdaa.miff
|
||||
t/reference/write/jng/write_gray.miff
|
||||
t/reference/write/jng/write_gray_prog_idat.miff
|
||||
t/reference/write/jng/write_gray_prog_jdaa.miff
|
||||
t/reference/write/jng/write_gray_prog.miff
|
||||
t/reference/write/jng/write_idat.miff
|
||||
t/reference/write/jng/write_jdaa.miff
|
||||
t/reference/write/jng/write_prog_idat.miff
|
||||
t/reference/write/jng/write_prog_jdaa.miff
|
||||
t/reference/write/jng/write_prog.miff
|
||||
t/reference/write/jp2/read_jp2.miff
|
||||
t/reference/write/jp2/read_jpc.miff
|
||||
t/reference/write/jp2/read_pgx.miff
|
||||
t/reference/write/jpeg/read_non_interlaced.miff
|
||||
t/reference/write/jpeg/read_plane_interlaced.miff
|
||||
t/reference/write/jpeg/write_non_interlaced.miff
|
||||
t/reference/write/jpeg/write_plane_interlaced.miff
|
||||
t/reference/write/read/gradient.miff
|
||||
t/reference/write/read/granite.miff
|
||||
t/reference/write/read/input_avs.miff
|
||||
t/reference/write/read/input_bmp24.miff
|
||||
t/reference/write/read/input_bmp.miff
|
||||
t/reference/write/read/input_cmyk.miff
|
||||
t/reference/write/read/input_dcx.miff
|
||||
t/reference/write/read/input_dib.miff
|
||||
t/reference/write/read/input_fits.miff
|
||||
t/reference/write/read/input_gif87.miff
|
||||
t/reference/write/read/input_gif.miff
|
||||
t/reference/write/read/input_gray.miff
|
||||
t/reference/write/read/input_ico.miff
|
||||
t/reference/write/read/input_im1.miff
|
||||
t/reference/write/read/input_im24.miff
|
||||
t/reference/write/read/input_im8.miff
|
||||
t/reference/write/read/input_mat.miff
|
||||
t/reference/write/read/input_miff.miff
|
||||
t/reference/write/read/input_mtv.miff
|
||||
t/reference/write/read/input_null_black.miff
|
||||
t/reference/write/read/input_null_DarkOrange.miff
|
||||
t/reference/write/read/input_null_white.miff
|
||||
t/reference/write/read/input_p7.miff
|
||||
t/reference/write/read/input_pbm_p1.miff
|
||||
t/reference/write/read/input_pbm_p4.miff
|
||||
t/reference/write/read/input_pcx.miff
|
||||
t/reference/write/read/input_pgm_p2.miff
|
||||
t/reference/write/read/input_pgm_p5.miff
|
||||
t/reference/write/read/input_pict.miff
|
||||
t/reference/write/read/input_ppm_p3.miff
|
||||
t/reference/write/read/input_ppm_p6.miff
|
||||
t/reference/write/read/input_psd.miff
|
||||
t/reference/write/read/input_rgba.miff
|
||||
t/reference/write/read/input_rgb.miff
|
||||
t/reference/write/read/input_rle.miff
|
||||
t/reference/write/read/input_sgi.miff
|
||||
t/reference/write/read/input_tga.miff
|
||||
t/reference/write/read/input_tile.miff
|
||||
t/reference/write/read/input_tim.miff
|
||||
t/reference/write/read/input_uyvy.miff
|
||||
t/reference/write/read/input_viff.miff
|
||||
t/reference/write/read/input_wbmp.miff
|
||||
t/reference/write/read/input_wpg.miff
|
||||
t/reference/write/read/input_xbm.miff
|
||||
t/reference/write/read/input_xc_black.miff
|
||||
t/reference/write/read/input_xpm.miff
|
||||
t/reference/write/read/input_xwd.miff
|
||||
t/reference/write/ttf/annotate.miff
|
||||
t/reference/write/ttf/label.miff
|
||||
t/reference/write/ttf/read.miff
|
||||
t/reference/write/wmf/clock.miff
|
||||
t/reference/write/wmf/wizard.miff
|
||||
t/setattribute.t
|
||||
t/subroutines.pl
|
||||
t/tiff/input_16_matte.tiff
|
||||
t/tiff/input_16.tiff
|
||||
t/tiff/input_256_matte.tiff
|
||||
t/tiff/input_256_planar_contig.tiff
|
||||
t/tiff/input_256_planar_separate.tiff
|
||||
t/tiff/input_256.tiff
|
||||
t/tiff/input_gray_12bit.tiff
|
||||
t/tiff/input_gray_16bit.tiff
|
||||
t/tiff/input_gray_4bit_matte.tiff
|
||||
t/tiff/input_gray_4bit.tiff
|
||||
t/tiff/input_gray_8bit_matte.tiff
|
||||
t/tiff/input_gray_8bit.tiff
|
||||
t/tiff/input_mono.tiff
|
||||
t/tiff/input_truecolor_16.tiff
|
||||
t/tiff/input_truecolor_stripped.tiff
|
||||
t/tiff/input_truecolor.tiff
|
||||
t/tiff/input_truecolor_tiled32x32.tiff
|
||||
t/tiff/read.t
|
||||
t/tiff/write.t
|
||||
t/ttf/input.ttf
|
||||
t/ttf/read.t
|
||||
t/wmf/clock.wmf
|
||||
t/wmf/read.t
|
||||
t/wmf/wizard.wmf
|
||||
t/write.t
|
||||
t/x11/congrats.fig
|
||||
t/x11/congrats.miff
|
||||
t/x11/input.xwd
|
||||
t/x11/read.t
|
||||
t/x11/write.t
|
||||
t/xfig/input.fig
|
||||
t/xfig/read.t
|
||||
t/zlib/input.miff
|
||||
t/zlib/read.t
|
||||
t/zlib/write.t
|
16
ImageMagick/PerlMagick/MANIFEST.SKIP
Normal file
|
@ -0,0 +1,16 @@
|
|||
.*\.gdbinit$
|
||||
.*core$
|
||||
/output.*$
|
||||
/test_.+_out\..+$
|
||||
Magick\.bs$
|
||||
Magick\.c$
|
||||
Magick\.o$
|
||||
\.bak$
|
||||
\.svn$
|
||||
\.old$
|
||||
^MANIFEST\.
|
||||
^MakeMaker-\d
|
||||
^Makefile$
|
||||
^blib/
|
||||
^pm_to_blib$
|
||||
~$
|
69
ImageMagick/PerlMagick/Magick.pm.in
Normal file
|
@ -0,0 +1,69 @@
|
|||
package Image::Magick;
|
||||
|
||||
# Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
|
||||
# dedicated to making software imaging solutions freely available.
|
||||
#
|
||||
# You may not use this file except in compliance with the License. You may
|
||||
# obtain a copy of the License at
|
||||
#
|
||||
# http://www.imagemagick.org/script/license.php
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Initial version, written by Kyle Shorter.
|
||||
|
||||
use strict;
|
||||
use Carp;
|
||||
|
||||
use parent qw/Image::Magick::@MAGICK_ABI_SUFFIX@/;
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Image::Magick - objected-oriented Perl interface to ImageMagick for default quantum (@MAGICK_ABI_SUFFIX@). Use it to read, manipulate, or write an image or image sequence from within a Perl script.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Image::Magick;
|
||||
$p = new Image::Magick;
|
||||
$p->Read("imagefile");
|
||||
$p->Set(attribute => value, ...)
|
||||
($a, ...) = $p->Get("attribute", ...)
|
||||
$p->routine(parameter => value, ...)
|
||||
$p->Mogrify("Routine", parameter => value, ...)
|
||||
$p->Write("filename");
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This Perl extension allows the reading, manipulation and writing of
|
||||
a large number of image file formats using the ImageMagick library.
|
||||
It was originally developed to be used by CGI scripts for Web pages.
|
||||
|
||||
A web page has been set up for this extension. See:
|
||||
|
||||
file://@DOCUMENTATION_PATH@/www/perl-magick.html
|
||||
http://www.imagemagick.org/script/perl-magick.php
|
||||
|
||||
If you have problems, go to
|
||||
|
||||
http://www.imagemagick.org/discourse-server/viewforum.php?f=7
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Kyle Shorter magick-users@imagemagick.org
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
Has all the bugs of ImageMagick and much, much more!
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
perl(1).
|
||||
|
||||
=cut
|
14061
ImageMagick/PerlMagick/Magick.xs
Normal file
271
ImageMagick/PerlMagick/Makefile.PL.in
Normal file
|
@ -0,0 +1,271 @@
|
|||
# Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
|
||||
# dedicated to making software imaging solutions freely available.
|
||||
#
|
||||
# You may not use this file except in compliance with the License. You may
|
||||
# obtain a copy of the License at
|
||||
#
|
||||
# http://www.imagemagick.org/script/license.php
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Exercise all regression tests:
|
||||
#
|
||||
# make test
|
||||
#
|
||||
# Exersise one regression test:
|
||||
#
|
||||
# make TEST_VERBOSE=1 TEST_FILES=t/filter.t test
|
||||
#
|
||||
|
||||
use ExtUtils::MakeMaker;
|
||||
use Config;
|
||||
use File::Spec::Functions qw/catfile catdir devnull catpath splitpath/;
|
||||
use Cwd;
|
||||
|
||||
sub AutodetectWin32gcc {
|
||||
my $wrkdir = getcwd();
|
||||
my $devnull = devnull();
|
||||
|
||||
my @incdir = ();
|
||||
my @libdir = ($wrkdir);
|
||||
my @bindir = ();
|
||||
|
||||
#try to get configuration info via identify or convert utilities
|
||||
my $conf = `identify -list Configure 2>$devnull` || `convert -list Configure 2>$devnull`;
|
||||
foreach my $line (split '\n', $conf) {
|
||||
if ($line =~ /^Path:\s+(.*)/) {
|
||||
my ($vol,$dir,$file) = splitpath($1);
|
||||
next unless $dir;
|
||||
my $dirpath = catpath( $vol, $dir);
|
||||
my (@l,@b,@i) = ( (),(),() );
|
||||
|
||||
# try to detect 'lib' dir
|
||||
push @l, catfile($dirpath,'lib');
|
||||
push @l, catfile($dirpath,'..','lib');
|
||||
push @l, catfile($dirpath,'..','..','lib');
|
||||
push @l, catfile($dirpath,'..','..','..','lib');
|
||||
foreach (@l) { push @libdir, $_ if (-d $_) };
|
||||
|
||||
# try to detect 'bin' dir
|
||||
push @b, catfile($dirpath);
|
||||
push @b, catfile($dirpath,'bin');
|
||||
push @b, catfile($dirpath,'..');
|
||||
push @b, catfile($dirpath,'..','bin');
|
||||
push @b, catfile($dirpath,'..','..');
|
||||
push @b, catfile($dirpath,'..','..','bin');
|
||||
push @b, catfile($dirpath,'..','..','..');
|
||||
push @b, catfile($dirpath,'..','..','..','bin');
|
||||
foreach (@b) { push @bindir, $_ if (-e "$_/convert.exe" || -e "$_/identify.exe") };
|
||||
|
||||
# try to detect 'include' dir
|
||||
push @i, catfile($dirpath,'include');
|
||||
push @i, catfile($dirpath,'include','ImageMagick');
|
||||
push @i, catfile($dirpath,'..','include');
|
||||
push @i, catfile($dirpath,'..','include','ImageMagick');
|
||||
push @i, catfile($dirpath,'..','..','include');
|
||||
push @i, catfile($dirpath,'..','..','include','ImageMagick');
|
||||
push @i, catfile($dirpath,'..','..','..','include');
|
||||
push @i, catfile($dirpath,'..','..','..','include','ImageMagick');
|
||||
foreach (@i) { push @incdir, $_ if (-e "$_/magick/MagickCore.h") };
|
||||
}
|
||||
};
|
||||
|
||||
foreach my $bin (@bindir) {
|
||||
opendir(my $bindir, $bin) or die qq{Cannot opendir $bin: $!};
|
||||
my @dlls = map {catfile($bin, $_)} grep /^\S*magick[^\+]\S*?\.dll$/i, readdir $bindir;
|
||||
foreach my $d (@dlls) {
|
||||
unlink "$wrkdir/libMagickCore.def", "$wrkdir/libMagickCore.a";
|
||||
system("pexports \"$d\" >\"$wrkdir/libMagickCore.def\" 2>$devnull");
|
||||
open(DEF, "<$wrkdir/libMagickCore.def");
|
||||
my @found = grep(/MagickCoreGenesis/, <DEF>); #checking if we have taken the right DLL
|
||||
close(DEF);
|
||||
next unless(@found);
|
||||
print STDERR "Gonna create 'libMagickCore.a' from '$d'\n";
|
||||
system("dlltool -D \"$d\" -d \"$wrkdir/libMagickCore.def\" -l \"$wrkdir/libMagickCore.a\" 2>$devnull");
|
||||
last if -s "$wrkdir/libMagickCore.a";
|
||||
}
|
||||
last if -s "$wrkdir/libMagickCore.a";
|
||||
}
|
||||
|
||||
unless(@incdir && @libdir && @bindir && (-s "$wrkdir/libMagickCore.a")) {
|
||||
print STDERR <<EOF
|
||||
################################### WARNING! ###################################
|
||||
# It seems that you are trying to install Perl::Magick on a MS Windows box with
|
||||
# perl + gcc compiler (e.g. strawberry perl), however we cannot find ImageMagick
|
||||
# binaries installed on your system.
|
||||
#
|
||||
# Please check the following prerequisites:
|
||||
#
|
||||
# 1) You need to have installed ImageMagick Windows binaries from
|
||||
# http://www.imagemagick.org/script/binary-releases.php#windows
|
||||
#
|
||||
# 2) We only support dynamic (DLL) ImageMagick binaries
|
||||
# note: it is not possible to mix 32/64-bit binaries of perl and ImageMagick
|
||||
#
|
||||
# 3) During installation select that you want to install ImageMagick's
|
||||
# development files (libraries+headers)
|
||||
#
|
||||
# 4) You also need to have ImageMagick's directory in your PATH
|
||||
# note: we are checking the presence of convert.exe and/or identify.exe tools
|
||||
#
|
||||
# 5) You might need Visual C++ Redistributable Package installed on your system
|
||||
# see instructions on ImageMagick's Binary Release webpage
|
||||
#
|
||||
# We are gonna continue, but chances for successful build are very low!
|
||||
################################################################################
|
||||
EOF
|
||||
}
|
||||
|
||||
my $inc = join ' ', map "-I\"$_\"", @incdir;
|
||||
my $lib = join ' ', map "-L\"$_\"", @libdir;
|
||||
|
||||
return ($inc, $lib);
|
||||
}
|
||||
|
||||
sub AutodetectDelegates {
|
||||
#try to get configuration info via identify or convert utilities
|
||||
my $devnull = devnull();
|
||||
my $conf = `identify -list Configure 2>$devnull` || `convert -list Configure 2>$devnull`;
|
||||
my @delegates = ();
|
||||
foreach my $line (split '\n', $conf) {
|
||||
next unless $line =~ /^DELEGATES\s+/;
|
||||
(undef, @delegates) = split /\s+/, $line;
|
||||
last;
|
||||
};
|
||||
return @delegates;
|
||||
}
|
||||
|
||||
# Compute test specification
|
||||
my $delegate_tests='t/*.t';
|
||||
my @tested_delegates = qw/bzlib djvu fftw fontconfig freetype jpeg jng jp2 lcms mpeg png rsvg tiff x11 xml wmf zlib/;
|
||||
my @supported_delegates = AutodetectDelegates();
|
||||
# find the intersection of tested and supported delegates
|
||||
my %seen_delegates = ();
|
||||
$seen_delegates{$_}++ for @supported_delegates;
|
||||
foreach my $delegate (@tested_delegates) {
|
||||
if ( $seen_delegates{$delegate} ) {
|
||||
if ( -d "t/$delegate" ) {
|
||||
if ( defined($ENV{'DISPLAY'}) && ($^O ne 'MSWin32') ) {
|
||||
if ( defined $ENV{'DISPLAY'} ) {
|
||||
$delegate_tests .= " t/$delegate/*.t";
|
||||
}
|
||||
next;
|
||||
}
|
||||
$delegate_tests .= " t/$delegate/*.t";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# defaults for LIBS & INC & CCFLAGS params that we later pass to Writemakefile
|
||||
my $INC_magick = '-I../ -I@top_srcdir@ @CPPFLAGS@ -I"' . $Config{'usrinc'} . '/ImageMagick"';
|
||||
my $LIBS_magick = '-L../magick/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ -lperl @MATH_LIBS@';
|
||||
my $CCFLAGS_magick = "$Config{'ccflags'} @CFLAGS@";
|
||||
my $LDFLAGS_magick = "-L../magick/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ $Config{'ldflags'} @LDFLAGS@";
|
||||
my $LDDLFLAGS_magick = "-L../magick/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ $Config{'lddlflags'} @LDFLAGS@";
|
||||
|
||||
if (($^O eq 'MSWin32') && ($Config{cc} =~ /gcc/)) {
|
||||
my($Ipaths, $Lpaths) = AutodetectWin32gcc();
|
||||
|
||||
#
|
||||
# Setup for strawberry perl.
|
||||
#
|
||||
$INC_magick = "$Ipaths";
|
||||
$LIBS_magick = "-lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@";
|
||||
$CCFLAGS_magick = "$Config{'ccflags'}";
|
||||
$LDFLAGS_magick = "$Config{'ldflags'} $Lpaths ";
|
||||
$LDDLFLAGS_magick = "$Config{'lddlflags'} $Lpaths ";
|
||||
}
|
||||
|
||||
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
|
||||
# the contents of the Makefile that is written.
|
||||
WriteMakefile
|
||||
(
|
||||
# Module description
|
||||
'ABSTRACT' => 'ImageMagick PERL Extension',
|
||||
|
||||
# Perl module name is Image::Magick
|
||||
'NAME' => 'Image::Magick',
|
||||
|
||||
# Module author
|
||||
'AUTHOR' => 'ImageMagick Studio LLC',
|
||||
|
||||
# Module version
|
||||
'VERSION' => '@PACKAGE_PERL_VERSION@',
|
||||
|
||||
# Prerequisite version
|
||||
'PREREQ_PM' => {'parent' => '0'},
|
||||
|
||||
# Preprocessor defines
|
||||
'DEFINE' => '@LFS_CPPFLAGS@ @DEFS@', # e.g., '-DHAVE_SOMETHING'
|
||||
|
||||
# Header search specfication and preprocessor flags
|
||||
'INC' => $INC_magick,
|
||||
|
||||
# C compiler
|
||||
#'CC' => '@CC@',
|
||||
|
||||
# C pre-processor flags (e.g. -I & -D options)
|
||||
# 'CPPFLAGS' => "$Config{'cppflags'} @CPPFLAGS@",
|
||||
|
||||
# C compiler flags (e.g. -O -g)
|
||||
'CCFLAGS' => $CCFLAGS_magick,
|
||||
|
||||
# Linker
|
||||
#'LD' => $Config{'ld'} == $Config{'cc'} ? '@CC@' : $Config{'ld'},
|
||||
|
||||
# Linker flags for building an executable
|
||||
'LDFLAGS' => $LDFLAGS_magick,
|
||||
|
||||
# Linker flags for building a dynamically loadable module
|
||||
'LDDLFLAGS' => $LDDLFLAGS_magick,
|
||||
|
||||
# Install PerlMagick binary into ImageMagick bin directory
|
||||
'INSTALLBIN' => '@BIN_DIR@',
|
||||
|
||||
# Library specification
|
||||
'LIBS' => [ $LIBS_magick ],
|
||||
|
||||
# Perl binary name (if a Perl binary is built)
|
||||
'MAP_TARGET' => 'PerlMagick',
|
||||
|
||||
# Let CFLAGS drive optimization flags by setting OPTIMIZE to empty
|
||||
# 'OPTIMIZE' => '',
|
||||
|
||||
# Use same compiler as ImageMagick
|
||||
'PERLMAINCC' => '@PERLMAINCC@ @OPENMP_CFLAGS@',
|
||||
'AR' => '@AR@',
|
||||
'LD' => '@PERLMAINCC@',
|
||||
|
||||
# Set Perl installation prefix to ImageMagick installation prefix
|
||||
# 'PREFIX' => '@prefix@',
|
||||
|
||||
# Include delegate directories in tests
|
||||
test => { TESTS => $delegate_tests},
|
||||
|
||||
($Config{'archname'} =~ /-object$/i ? ('CAPI' => 'TRUE') : ()),
|
||||
|
||||
# sane version
|
||||
depend => { '$(FIRST_MAKEFILE)' => '$(VERSION_FROM)' }
|
||||
);
|
||||
|
||||
|
||||
#
|
||||
# Substitutions for "makeaperl" section.
|
||||
#
|
||||
sub MY::makeaperl {
|
||||
package MY; # so that "SUPER" works right
|
||||
my $inherited = shift->SUPER::makeaperl(@_);
|
||||
|
||||
# Stinky ExtUtils::MM_Unix likes to append its own library path to $(CC),
|
||||
# prior to any user-specified library path so that an installed library is
|
||||
# used rather than the library just built. This substitution function
|
||||
# tries to insert our library path first. Also, use the same compiler used
|
||||
# to build perlmain.c to link so that a C++ compiler may be used if
|
||||
# necessary.
|
||||
$inherited =~ s:MAP_LINKCMD\s.*\s*\$\(CC\):MAP_LINKCMD = \$(PERLMAINCC) -L@MAGICKCORE_PATH@: ;
|
||||
$inherited;
|
||||
}
|
138
ImageMagick/PerlMagick/Makefile.am
Normal file
|
@ -0,0 +1,138 @@
|
|||
# Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
|
||||
# dedicated to making software imaging solutions freely available.
|
||||
#
|
||||
# You may not use this file except in compliance with the License. You may
|
||||
# obtain a copy of the License at
|
||||
#
|
||||
# http://www.imagemagick.org/script/license.php
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Copyright (C) 2003 - 2008 GraphicsMagick Group
|
||||
#
|
||||
# Makefile for building PerlMagick.
|
||||
|
||||
# If source files missing, see if they can be obtained via VPATH
|
||||
|
||||
$(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.xs: $(PERLMAGICK)/quantum/quantum.xs
|
||||
$(AM_V_GEN) $(LN_S) $(notdir $^) $@
|
||||
|
||||
$(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.pm: $(PERLMAGICK)/quantum/quantum.pm
|
||||
$(AM_V_GEN) $(LN_S) $(notdir $^) $@
|
||||
|
||||
perl-quantum-sources: $(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.xs $(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.pm
|
||||
|
||||
perl-sources: perl-quantum-sources
|
||||
@if test -n "$(VPATH)" ; then \
|
||||
echo "Linking PerlMagick Sources ..." ; \
|
||||
imagemagick=`(cd $(VPATH) ; pwd)` && \
|
||||
( cd $(PERLMAGICK) && \
|
||||
sh $$imagemagick/config/lndir.sh $$imagemagick/$(PERLMAGICK) ; ) \
|
||||
fi ; \
|
||||
touch perl-sources
|
||||
|
||||
if WITH_PERL
|
||||
|
||||
PERLMAGICK=PerlMagick
|
||||
PERLMAKEMAKER=$(PERLMAGICK)/Makefile.PL
|
||||
PERLMAKEFILE=$(PERLMAGICK)/Makefile
|
||||
|
||||
PERLMAGICK_ALL_LOCAL_TARGETS = all-perl
|
||||
PERLMAGICK_INSTALL_EXEC_LOCAL_TARGETS = install-exec-perl
|
||||
PERLMAGICK_INSTALL_DATA_LOCAL_TARGETS =
|
||||
PERLMAGICK_UNINSTALL_LOCAL_TARGETS = uninstall-exec-perl
|
||||
PERLMAGICK_CLEAN_LOCAL_TARGETS = clean-perl
|
||||
PERLMAGICK_DISTCLEAN_LOCAL_TARGETS = clean-perl
|
||||
PERLMAGICK_MAINTAINER_CLEAN_LOCAL_TARGETS = distclean-local
|
||||
PERLMAGICK_TESTS = PerlMagick/check.sh
|
||||
|
||||
if WITH_PERL_DYNAMIC
|
||||
|
||||
PERLMAGICK_CHECKSCRPTS =
|
||||
|
||||
$(PERLMAKEFILE): perl-sources $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) $(PERLMAKEMAKER)
|
||||
cd $(PERLMAGICK) && @PERL@ Makefile.PL $(PERL_MAKE_OPTIONS)
|
||||
|
||||
install-exec-perl: $(PERLMAKEFILE)
|
||||
( cd $(PERLMAGICK) && $(MAKE) CC='@CC@' && \
|
||||
$(MAKE) CC='@CC@' install )
|
||||
|
||||
all-perl: perl-sources
|
||||
|
||||
uninstall-exec-perl: $(PERLMAKEFILE)
|
||||
echo "Uninstall not supported for PerlMagick"
|
||||
|
||||
check-perl: $(PERLMAKEFILE)
|
||||
cd $(PERLMAGICK) && $(abs_top_builddir)/magick.sh $(MAKE) CC='@CC@' test
|
||||
|
||||
perl-build: $(PERLMAKEFILE)
|
||||
( cd $(PERLMAGICK) && $(MAKE) CC='@CC@' )
|
||||
|
||||
else
|
||||
if WITH_PERL_STATIC
|
||||
|
||||
PERLSTATICNAME=PerlMagick
|
||||
|
||||
PERLMAGICK_CHECKSCRPTS = perl-build
|
||||
|
||||
$(PERLMAKEFILE): perl-sources $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) $(PERLMAKEMAKER)
|
||||
cd $(PERLMAGICK) && @PERL@ Makefile.PL MAP_TARGET=$(PERLSTATICNAME) $(PERL_MAKE_OPTIONS) && $(MAKE) Makefile ; $(MAKE) Makefile
|
||||
|
||||
$(PERLMAGICK)/$(PERLSTATICNAME): $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) $(PERLMAKEFILE)
|
||||
( rm -f $(PERLMAGICK)/$(PERLSTATICNAME) ; cd $(PERLMAGICK) && $(MAKE) CC='@CC@' $(PERLSTATICNAME) ; $(MAKE) CC='@CC@' $(PERLSTATICNAME) )
|
||||
|
||||
all-perl: $(PERLMAGICK)/$(PERLSTATICNAME)
|
||||
|
||||
install-exec-perl: $(PERLMAGICK)/$(PERLSTATICNAME)
|
||||
rm -f "$(DESTDIR)$(BIN_DIR)/$(PERLSTATICNAME)"
|
||||
if test "x$(DESTDIR)" = "x" -o "$(PERL_SUPPORTS_DESTDIR)" = 'yes' ; then \
|
||||
( cd $(PERLMAGICK) && \
|
||||
$(MAKE) -f Makefile.aperl CC='@CC@' inst_perl MAP_TARGET=$(PERLSTATICNAME) \
|
||||
INSTALLBIN="$(BIN_DIR)" \
|
||||
) ; \
|
||||
else \
|
||||
( cd $(PERLMAGICK) && \
|
||||
$(MAKE) -f Makefile.aperl CC='@CC@' inst_perl MAP_TARGET=$(PERLSTATICNAME) \
|
||||
INSTALLBIN="$(DESTDIR)$(BIN_DIR)" PREFIX="$(DESTDIR)$(prefix)" \
|
||||
) ; \
|
||||
fi
|
||||
|
||||
uninstall-exec-perl:
|
||||
rm -f '$(DESTDIR)$(BIN_DIR)/$(PERLSTATICNAME)'
|
||||
|
||||
check-perl: $(PERLMAGICK)/$(PERLSTATICNAME)
|
||||
cd $(PERLMAGICK) && $(abs_top_builddir)/magick.sh $(MAKE) -f Makefile.aperl CC='@CC@' test
|
||||
|
||||
perl-build: $(PERLMAGICK)/$(PERLSTATICNAME)
|
||||
|
||||
endif # WITH_PERL_STATIC
|
||||
endif # WTIH_PERL_DYNAMIC
|
||||
|
||||
|
||||
clean-perl:
|
||||
(cd $(PERLMAGICK) && \
|
||||
( if test -f Makefile.old ; then $(MAKE) -f Makefile.old CC='@CC@' clean ; fi ) ; \
|
||||
( if test -f Makefile ; then $(MAKE) CC='@CC@' clean ; fi ) ; \
|
||||
( if test -f Makefile ; then $(MAKE) CC='@CC@' clean ; fi ) ; \
|
||||
rm -f Makefile.old PerlMagick ; \
|
||||
rm -f t/output* t/jng/*_tmp.jng t/*/output* ; \
|
||||
rm -f quantum/@MAGICK_ABI_SUFFIX@.xs;\
|
||||
rm -f quantum/@MAGICK_ABI_SUFFIX@.pm;\
|
||||
rm -f Magick.pm;)
|
||||
rm -f perl-sources
|
||||
|
||||
distclean-perl: clean-perl
|
||||
|
||||
else
|
||||
# Satisfy makefile requirements if not building PERL
|
||||
all-perl:
|
||||
install-exec-perl:
|
||||
uninstall-exec-perl:
|
||||
check-perl:
|
||||
clean-perl:
|
||||
distclean-perl:
|
||||
endif # WITH_PERL
|
169
ImageMagick/PerlMagick/Makefile.nt
Normal file
|
@ -0,0 +1,169 @@
|
|||
# Copyright (C) 1999-2013 ImageMagick Studio LLC
|
||||
#
|
||||
# This program is covered by multiple licenses, which are described in
|
||||
# LICENSE. You should have received a copy of LICENSE with this
|
||||
# package; otherwise see http://www.imagemagick.org/script/license.php.
|
||||
#
|
||||
# Makefile for building PerlMagick under Windows
|
||||
#
|
||||
#
|
||||
#
|
||||
use ExtUtils::MakeMaker;
|
||||
use Config;
|
||||
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
|
||||
# the contents of the Makefile that is written.
|
||||
#
|
||||
# NOTE: The current ActiveState binary distribution does not completely setup
|
||||
# the values in C:/Perl/lib/Config.pm. You must manually modify the values of
|
||||
# libpth to add the VisualC++ library path. It should look similar to one of
|
||||
# the following examples in order to work properly.
|
||||
#
|
||||
# Random developer
|
||||
# libpth='"C:\Perl\lib\CORE" "D:\DevStudio\VC98\lib"'
|
||||
#
|
||||
# Visual Studio 6.0 default install:
|
||||
# libpth='"C:\Program Files\Microsoft Visual Studio\VC98\lib" "C:\Perl\lib\CORE"'
|
||||
#
|
||||
# Visual Studio 7.0 default install:
|
||||
# libpth='"C:\Program Files\Microsoft Visual Studio .NET\vc7\lib" "C:\Perl\lib\CORE"'
|
||||
#
|
||||
# Visual Studio 7.1 default install:
|
||||
# libpth='"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib" "C:\Perl\lib\CORE"'
|
||||
#
|
||||
# Visual Studio 9.0 default install (C:\Perl\lib\Config.pm):
|
||||
# libpth='"C:\Program Files\Microsoft Visual Studio 9.0\VC\lib" "C:\Perl\lib\CORE"'
|
||||
#
|
||||
WriteMakefile(
|
||||
'ABSTRACT' => 'ImageMagick PERL Extension',
|
||||
'AUTHOR' => 'ImageMagick Studio',
|
||||
'NAME' => 'Image::Magick',
|
||||
'VERSION_FROM' => 'Magick.pm', # finds $VERSION
|
||||
'LIBS' => ['-L..\VisualMagick\lib -L..\VisualMagick\bin -lCORE_RL_magick_.lib -lCORE_DB_magick_.lib'],
|
||||
'DEFINE' => '-D_VISUALC_ -D_WINDOWS', # e.g., '-DHAVE_SOMETHING'
|
||||
'INC' => '-I.. -I..\xlib\include',
|
||||
'BINARY_LOCATION' => 'x86/Image-Magick.tar.gz',
|
||||
'dist' => {ZIP => "zip.exe", ZIPFLAGS=>"-r"},
|
||||
'clean' => {FILES => "Image-Magick.ppd Image-Magick.tar.gz PerlMagick.zip " },
|
||||
($Config{'archname'} =~ /-object$/i ? ('CAPI' => 'TRUE') : ()),
|
||||
);
|
||||
|
||||
#
|
||||
# Add a targets for building ActiveState ppm distribution modules
|
||||
# Dylan Beattie <dylan@zepler.org>, April 2002
|
||||
#
|
||||
# Requires tar, gzip, and zip. This produces PerlMagick.zip
|
||||
# Get GNU tar and gzip from http://sourceware.cygnus.com/
|
||||
# Get Win32 command line PKZIP from http://www.pkware.com/
|
||||
# and rename PKZIP.EXE to ZIP.EXE and PKUNZIP.EXE to UNZIP.EXE
|
||||
# Make sure tar.exe, gzip.exe and zip.exe are in your system path
|
||||
#
|
||||
# 'nmake ppm' will include only the PerlMagick module
|
||||
# 'nmake ppm-full' also includes all ImageMagick DLLs and MGK files
|
||||
|
||||
sub MY::postamble
|
||||
{
|
||||
'
|
||||
Image-Magick.tar.gz: ppd pure_all #htmlifypods manifypods
|
||||
if exist Image-Magick.tar.gz del Image-Magick.tar.gz
|
||||
if exist Image-Magick.tar del Image-Magick.tar
|
||||
$(TAR) $(TARFLAGS) Image-Magick.tar blib
|
||||
$(COMPRESS) -q Image-Magick.tar
|
||||
|
||||
release: Image-Magick.tar.gz
|
||||
|
||||
ppm: ppd pure_all htmlifypods manifypods
|
||||
if exist PerlMagick.zip del PerlMagick.zip
|
||||
$(TAR) $(TARFLAGS) Image-Magick.tar blib
|
||||
$(COMPRESS) -q Image-Magick.tar
|
||||
if exist x86 del x86 /f /q
|
||||
if exist x86 rd x86
|
||||
md x86
|
||||
copy Image-Magick.tar$(SUFFIX) x86
|
||||
del Image-Magick.tar$(SUFFIX)
|
||||
if exist ppm-readme.txt copy ppm-readme.txt readme
|
||||
$(ZIP) $(ZIPFLAGS) PerlMagick.zip readme Image-Magick.ppd x86/Image-Magick.tar$(SUFFIX)
|
||||
del x86\Image-Magick.tar$(SUFFIX)
|
||||
rd x86
|
||||
|
||||
ppm-full: ppd pure_all htmlifypods manifypods
|
||||
if exist PerlMagick-full.zip del PerlMagick-full.zip
|
||||
copy ..\VisualMagick\bin\*.dll blib\arch\auto\Image\Magick
|
||||
copy ..\VisualMagick\bin\*.xml blib\arch\auto\Image\Magick
|
||||
$(TAR) $(TARFLAGS) Image-Magick.tar blib
|
||||
$(COMPRESS) -q Image-Magick.tar
|
||||
if exist x86 del x86 /f /q
|
||||
if exist x86 rd x86
|
||||
md x86
|
||||
copy Image-Magick.tar$(SUFFIX) x86
|
||||
del Image-Magick.tar$(SUFFIX)
|
||||
if exist ppm-readme.txt copy ppm-readme.txt readme
|
||||
$(ZIP) $(ZIPFLAGS) PerlMagick-full.zip readme Image-Magick.ppd x86/Image-Magick.tar$(SUFFIX)
|
||||
del x86\Image-Magick.tar$(SUFFIX)
|
||||
rd x86
|
||||
'
|
||||
}
|
||||
|
||||
#
|
||||
# Modify the MakeMaker test fragment
|
||||
#
|
||||
sub MY::test
|
||||
{
|
||||
#
|
||||
# List any ImageMagick features derived from add-on libraries
|
||||
# or programs you would like to test.
|
||||
#
|
||||
# Valid choices are:
|
||||
#
|
||||
# Feature Formats Tested Prerequisites
|
||||
# ======= ====================== ======================================
|
||||
# bzlib BZip compression BZip library
|
||||
# cgm CGM format 'ralcgm' program
|
||||
# hdf HDF format HDF library
|
||||
# jbig JBIG format JBIG library
|
||||
# jpeg JPEG format JPEG library
|
||||
# mpeg MPEG format 'ffmpeg' program
|
||||
# png PNG format PNG and Zlib libraries
|
||||
# ps Postscript format 'gs' program and/or DPS library
|
||||
# rad Radiance format 'ra_ppm' program
|
||||
# tiff TIFF format TIFF library
|
||||
# ttf TrueType font format FreeType library
|
||||
# x X11 support X-windows libraries and server
|
||||
# xfig Xfig format 'transfig' program
|
||||
# zlib Zip compression Zlib library
|
||||
#
|
||||
my @DELEGATES = qw/ bzlib cgm jbig jpeg mpeg png ps tiff wmf x xfig zlib/;
|
||||
|
||||
package MY; # so that "SUPER" works right
|
||||
my $inherited = shift->SUPER::test(@_);
|
||||
my $delegate_tests=
|
||||
" t/setattribute.t" .
|
||||
" t/getattribute.t" .
|
||||
" t/filter.t" .
|
||||
" t/read.t" .
|
||||
" t/ping.t" .
|
||||
" t/montage.t" .
|
||||
" t/write.t" .
|
||||
" t/hpgl/read.t" .
|
||||
" t/jbig/read.t" .
|
||||
" t/jbig/write.t" .
|
||||
" t/jng/read.t" .
|
||||
" t/jng/write.t" .
|
||||
" t/jp2/read.t" .
|
||||
" t/jpeg/read.t" .
|
||||
" t/jpeg/write.t" .
|
||||
" t/png/read.t" .
|
||||
" t/png/write.t" .
|
||||
" t/ps/read.t" .
|
||||
" t/ps/write.t" .
|
||||
" t/tiff/read.t" .
|
||||
" t/tiff/write.t" .
|
||||
" t/ttf/read.t" .
|
||||
" t/wmf/read.t" .
|
||||
" t/zlib/read.t" .
|
||||
" t/zlib/write.t";
|
||||
if ( defined $ENV{'DISPLAY'} ) {
|
||||
$delegate_tests .= " t/x11/write.t t/x11/read.t";
|
||||
}
|
||||
$inherited =~ s:^TEST_FILES =.*:TEST_FILES = ${delegate_tests}:m;
|
||||
$inherited;
|
||||
}
|
137
ImageMagick/PerlMagick/README.txt
Normal file
|
@ -0,0 +1,137 @@
|
|||
Introduction
|
||||
|
||||
PerlMagick, is an objected-oriented Perl interface to ImageMagick.
|
||||
Use the module to read, manipulate, or write an image or image sequence
|
||||
from within a Perl script. This makes it suitable for Web CGI scripts. You
|
||||
must have ImageMagick 6.8.3 or above installed on your system for this
|
||||
module to work properly.
|
||||
|
||||
See
|
||||
|
||||
http://www.imagemagick.org/script/perl-magick.php
|
||||
|
||||
for additional information about PerlMagick. If you have problems, go to
|
||||
|
||||
http://www.imagemagick.org/discourse-server/viewforum.php?f=7
|
||||
|
||||
for help. For instructions about installing ImageMagick, see
|
||||
|
||||
http://www.imagemagick.org/
|
||||
|
||||
|
||||
Installation
|
||||
|
||||
Get the PerlMagick distribution and type the following:
|
||||
|
||||
gunzip ImageMagick-6.8.3-0.tar.gz
|
||||
tar xvf ImageMagick-6.8.3
|
||||
|
||||
Follow the ImageMagick installation instructions in INSTALL-unix.txt
|
||||
then type
|
||||
|
||||
cd PerlMagick
|
||||
|
||||
Next, edit Makefile.PL and change LIBS and INC to include the appropriate
|
||||
path information to the required libMagick library. You will also need
|
||||
library search paths (-L) to JPEG, PNG, TIFF, etc. libraries if they were
|
||||
included with your installed version of ImageMagick. If an extension
|
||||
library is built as a shared library but not installed in the system's
|
||||
default library search path, you may need to add run-path information
|
||||
(often -R or -rpath) corresponding to the equivalent library search
|
||||
path option so that the library can be located at run-time.
|
||||
|
||||
To create and install the dymamically-loaded version of PerlMagick
|
||||
(the preferred way), execute
|
||||
|
||||
perl Makefile.PL
|
||||
make
|
||||
make install
|
||||
|
||||
To create and install a new 'perl' executable (replacing your existing
|
||||
PERL interpreter!) with PerlMagick statically linked (but other libraries
|
||||
linked statically or dynamically according to system linker default),
|
||||
execute
|
||||
|
||||
perl Makefile.PL
|
||||
make perl
|
||||
make -f Makefile.aperl inst_perl
|
||||
|
||||
or to create and install a new PERL interpreter with a different name
|
||||
than 'perl' (e.g. 'PerlMagick') and with PerlMagick statically linked
|
||||
|
||||
perl Makefile.PL MAP_TARGET=PerlMagick
|
||||
make PerlMagick
|
||||
make -f Makefile.aperl inst_perl
|
||||
|
||||
See the ExtUtils::MakeMaker(3) manual page for more information on
|
||||
building PERL extensions (like PerlMagick).
|
||||
|
||||
For Windows systems, type
|
||||
|
||||
perl Makefile.nt
|
||||
nmake install
|
||||
|
||||
For Unix, you typically need to be root to install the software.
|
||||
There are ways around this. Consult the Perl manual pages for more
|
||||
information. You are now ready to utilize the PerlMagick routines from
|
||||
within your Perl scripts.
|
||||
|
||||
Installation - Win32 Strawberry perl
|
||||
|
||||
On Win32 Strawberry perl the prefered way of installing PerlMagick is the
|
||||
following:
|
||||
|
||||
1) Download and install ImageMagick Windows binaries from
|
||||
http://www.imagemagick.org/script/binary-releases.php#windows
|
||||
|
||||
2) You HAVE TO choose dynamic (DLL) ImageMagick binaries. Note: it is not
|
||||
possible to mix 32/64bit binaries of perl and ImageMagick
|
||||
|
||||
3) During installation select that you want to install ImageMagick's
|
||||
development files (libraries+headers)
|
||||
|
||||
4) You NEED TO have ImageMagick's directory in your PATH. Note: we are
|
||||
checking the presence of convert.exe or identify.exe tools
|
||||
|
||||
5) You might need Visual C++ Redistributable Package installed on your
|
||||
system. See instructions on ImageMagick's Binary Release webpage.
|
||||
|
||||
6) If you have all prerequisites 1)...5) you can simply install
|
||||
ImageMagick by running: cpan -i Image::Magick
|
||||
|
||||
|
||||
Testing PerlMagick
|
||||
|
||||
Before PerlMagick is installed, you may want to execute
|
||||
|
||||
make test
|
||||
|
||||
to verify that PERL can load the PerlMagick extension ok. Chances are
|
||||
some of the tests will fail if you do not have the proper delegates
|
||||
installed for formats like JPEG, TIFF, etc.
|
||||
|
||||
To see a number of PerlMagick demonstration scripts, type
|
||||
|
||||
cd demo
|
||||
make
|
||||
|
||||
|
||||
Example Perl Magick Script
|
||||
|
||||
Here is an example script to get you started:
|
||||
|
||||
#!/usr/bin/perl
|
||||
use Image::Magick;
|
||||
|
||||
$q = Image::Magick->new;
|
||||
$x = $q->Read("model.gif", "logo.gif", "rose.gif");
|
||||
warn "$x" if $x;
|
||||
|
||||
$x = $q->Crop(geom=>'100x100+100+100');
|
||||
warn "$x" if $x;
|
||||
|
||||
$x = $q->Write("x.gif");
|
||||
warn "$x" if $x;
|
||||
|
||||
The script reads three images, crops them, and writes a single image
|
||||
as a GIF animation sequence.
|
52
ImageMagick/PerlMagick/check.sh.in
Normal file
|
@ -0,0 +1,52 @@
|
|||
#!/bin/sh
|
||||
# Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
|
||||
# dedicated to making software imaging solutions freely available.
|
||||
#
|
||||
# You may not use this file except in compliance with the License. You may
|
||||
# obtain a copy of the License at
|
||||
#
|
||||
# http://www.imagemagick.org/script/license.php
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Copyright (C) 2003 - 2009 GraphicsMagick Group
|
||||
#
|
||||
# Check script for building PerlMagick.
|
||||
|
||||
echo "LD_LIBRARY_PATH='${LD_LIBRARY_PATH}'"
|
||||
echo "MAGICK_CODER_MODULE_PATH='${MAGICK_CODER_MODULE_PATH}'"
|
||||
echo "MAGICK_CONFIGURE_PATH='${MAGICK_CONFIGURE_PATH}'"
|
||||
echo "MAGICK_FILTER_MODULE_PATH='${MAGICK_FILTER_MODULE_PATH}'"
|
||||
echo "MAKE='${MAKE}'"
|
||||
echo "MAKEFLAGS='${MAKEFLAGS}'"
|
||||
echo "MEMCHECK='${MEMCHECK}'"
|
||||
echo "PATH='${PATH}'"
|
||||
echo "SRCDIR='${SRCDIR}'"
|
||||
echo "srcdir='${srcdir}'"
|
||||
|
||||
set -x
|
||||
|
||||
SRCDIR=`dirname $0`
|
||||
SRCDIR=`cd $SRCDIR && pwd`
|
||||
TOPSRCDIR=`cd $srcdir && pwd`
|
||||
|
||||
cd PerlMagick || exit 1
|
||||
|
||||
if test -z "${MAKE}" ; then
|
||||
MAKE=make
|
||||
fi
|
||||
|
||||
if test -x PerlMagick -a -f Makefile.aperl ; then
|
||||
# Static build test incantation
|
||||
${MAKE} -f Makefile.aperl CC='@CC@' TEST_VERBOSE=1 test
|
||||
elif test -f Makefile -a -f Magick.o; then
|
||||
# Shared build test incantation
|
||||
${MAKE} CC='@CC@' TEST_VERBOSE=1 test
|
||||
else
|
||||
echo 'PerlMagick has not been built!'
|
||||
exit 1
|
||||
fi
|
BIN
ImageMagick/PerlMagick/demo/Generic.ttf
Normal file
17
ImageMagick/PerlMagick/demo/Makefile
Normal file
|
@ -0,0 +1,17 @@
|
|||
all:
|
||||
perl demo.pl
|
||||
perl button.pl
|
||||
perl shapes.pl
|
||||
perl piddle.pl
|
||||
perl tree.pl
|
||||
perl steganography.pl
|
||||
perl shadow-text.pl
|
||||
perl compose-specials.pl
|
||||
perl pixel-fx.pl
|
||||
perl single-pixels.pl
|
||||
perl annotate.pl
|
||||
perl composite.pl
|
||||
|
||||
clean:
|
||||
/bin/rm -f demo.jpg button.gif model.png shadow.gif tree.gif \
|
||||
compose-specials.jpg single-pixels.gif pixel-fx.gif
|
6
ImageMagick/PerlMagick/demo/README
Normal file
|
@ -0,0 +1,6 @@
|
|||
This directory contains a number of PerlMagick demonstration scripts. Just
|
||||
type
|
||||
|
||||
make
|
||||
|
||||
to exercise the various examples.
|
57
ImageMagick/PerlMagick/demo/Turtle.pm
Normal file
|
@ -0,0 +1,57 @@
|
|||
package
|
||||
Turtle;
|
||||
|
||||
# Written by jreed@itis.com, adapted by Cristy.
|
||||
|
||||
sub new
|
||||
{
|
||||
my $class = shift;
|
||||
my $self = {};
|
||||
|
||||
@{$self}{qw(x y theta mirror)} = @_;
|
||||
bless $self, $class;
|
||||
}
|
||||
|
||||
sub forward
|
||||
{
|
||||
my $self = shift;
|
||||
my ($r, $what) = @_;
|
||||
my ($newx, $newy)=($self->{x}+$r* sin($self->{theta}),
|
||||
$self->{y}+$r*-cos($self->{theta}));
|
||||
if ($what) {
|
||||
&$what($self->{x}, $self->{y}, $newx, $newy); # motion
|
||||
}
|
||||
# According to the coderef passed in
|
||||
($self->{x}, $self->{y})=($newx, $newy); # change the old coords
|
||||
}
|
||||
|
||||
sub turn
|
||||
{
|
||||
my $self = shift;
|
||||
my $dtheta = shift;
|
||||
|
||||
$self->{theta} += $dtheta*$self->{mirror};
|
||||
}
|
||||
|
||||
sub state
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
@{$self}{qw(x y theta mirror)};
|
||||
}
|
||||
|
||||
sub setstate
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
@{$self}{qw(x y theta mirror)} = @_;
|
||||
}
|
||||
|
||||
sub mirror
|
||||
{
|
||||
my $self = shift;
|
||||
|
||||
$self->{mirror} *= -1;
|
||||
}
|
||||
|
||||
"Turtle.pm";
|
40
ImageMagick/PerlMagick/demo/annotate.pl
Normal file
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use Image::Magick;
|
||||
|
||||
#$font = '-adobe-helvetica-medium-r-normal--25-180-100-100-p-130-iso8729-1';
|
||||
#$font = 'Times';
|
||||
$font = 'Generic.ttf';
|
||||
|
||||
$image = Image::Magick->new();
|
||||
$x = 100;
|
||||
$y = 100;
|
||||
for ($angle=0; $angle < 360; $angle+=30)
|
||||
{
|
||||
my ($label);
|
||||
|
||||
print "angle $angle\n";
|
||||
$label=Image::Magick->new(size=>"600x600",pointsize=>24,font=>$font);
|
||||
$label->Read("xc:white");
|
||||
$label->Draw(primitive=>'line',points=>"300,100 300,500",stroke=>'#600');
|
||||
$label->Draw(primitive=>'line',points=>"100,300 500,300",stroke=>'#600');
|
||||
$label->Draw(primitive=>'rectangle',points=>"100,100 500,500",fill=>'none',
|
||||
stroke=>'#600');
|
||||
$label->Annotate(text=>"North West",gravity=>"NorthWest",x=>$x,y=>$y,
|
||||
undercolor=>'yellow',rotate=>$angle);
|
||||
$label->Annotate(text=>"North",gravity=>"North",y=>$y,rotate=>$angle);
|
||||
$label->Annotate(text=>"North East",gravity=>"NorthEast",x=>$x,y=>$y,
|
||||
rotate=>$angle);
|
||||
$label->Annotate(text=>"West",gravity=>"West",x=>$x,rotate=>$angle);
|
||||
$label->Annotate(text=>"Center",gravity=>"Center",rotate=>$angle);
|
||||
$label->Annotate(text=>"East",gravity=>"East",x=>$x,rotate=>$angle);
|
||||
$label->Annotate(text=>"South West",gravity=>"SouthWest",x=>$x,y=>$y,
|
||||
rotate=>$angle);
|
||||
$label->Annotate(text=>"South",gravity=>"South",y=>$y,rotate=>$angle);
|
||||
$label->Annotate(text=>"South East",gravity=>"SouthEast",x=>$x,y=>$y,
|
||||
rotate=>$angle);
|
||||
push(@$image,$label);
|
||||
}
|
||||
$image->Set(delay=>20);
|
||||
$image->Write("annotate.miff");
|
||||
$image->Animate();
|
71
ImageMagick/PerlMagick/demo/annotate_words.pl
Executable file
|
@ -0,0 +1,71 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# annotate_words.pl
|
||||
#
|
||||
# Take the internal string, split it into words and try to annotate each
|
||||
# individual word correctly, so as to control spacing between the words
|
||||
# under program control.
|
||||
#
|
||||
# A demonstration of using QueryFontMetrics(), by passing it exactly the same
|
||||
# arguments as you would for Annotate(), to determine the location of the
|
||||
# text that is/was drawn.
|
||||
#
|
||||
# Example script from Zentara
|
||||
# http://zentara.net/Remember_How_Lucky_You_Are.html
|
||||
#
|
||||
use warnings;
|
||||
use strict;
|
||||
use Image::Magick;
|
||||
|
||||
my $image = Image::Magick->new;
|
||||
$image->Set(size=>'500x200');
|
||||
my $rc = $image->Read("xc:white");
|
||||
|
||||
my $str = 'Just Another Perl Hacker';
|
||||
my (@words) = split ' ',$str;
|
||||
#print join "\n",@words,"\n";
|
||||
|
||||
my ($x,$y) = (50,50);
|
||||
|
||||
foreach my $word (@words){
|
||||
|
||||
$image->Annotate(
|
||||
pointsize => 24,
|
||||
fill => '#000000ff', #last 2 digits transparency in hex ff=max
|
||||
text => $word,
|
||||
gravity => 'NorthWest',
|
||||
align => 'left',
|
||||
x => $x,
|
||||
y => $y,
|
||||
);
|
||||
|
||||
my ( $character_width,$character_height,$ascender,$descender,$text_width,
|
||||
$text_height,$maximum_horizontal_advance, $boundsx1, $boundsy1,
|
||||
$boundsx2, $boundsy2,$originx,$originy) =
|
||||
$image->QueryFontMetrics(
|
||||
pointsize => 24,
|
||||
text => $word,
|
||||
gravity => 'NorthWest',
|
||||
align => 'left',
|
||||
x => $x,
|
||||
y => $y,
|
||||
);
|
||||
|
||||
print "$word ( $character_width, $character_height,
|
||||
$ascender,$descender,
|
||||
$text_width, $text_height,
|
||||
$maximum_horizontal_advance,
|
||||
$boundsx1, $boundsy1,
|
||||
$boundsx2, $boundsy2,
|
||||
$originx,$originy)\n";
|
||||
|
||||
my $n = $x + $originx + $character_width/3; # add a space
|
||||
print "Next word at: $x + $originx + $character_width/3 => $n\n";
|
||||
$x = $n;
|
||||
|
||||
}
|
||||
|
||||
$image->Write("show:");
|
||||
|
||||
exit;
|
||||
|
15
ImageMagick/PerlMagick/demo/button.pl
Normal file
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Make simple beveled button.
|
||||
#
|
||||
use Image::Magick;
|
||||
|
||||
$q=Image::Magick->new;
|
||||
$q->Set(size=>'30x106');
|
||||
$q->Read('gradient:#00f685-#0083f8');
|
||||
$q->Rotate(-90);
|
||||
$q->Raise('6x6');
|
||||
$q->Annotate(text=>'Push Me',font=>'Generic.ttf',fill=>'black',
|
||||
gravity=>'Center',pointsize=>18);
|
||||
$q->Write('button.gif');
|
||||
$q->Write('win:');
|
252
ImageMagick/PerlMagick/demo/compose-specials.pl
Executable file
|
@ -0,0 +1,252 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Demonstration of some of the fancier Image Composition Methods
|
||||
# including the 'rotate' parameter specific to PerlMagick Composite()
|
||||
#
|
||||
# NOTE: versions of IM older than IM v6.5.3-4 will need to rename the
|
||||
# parameter "args=>" to the mis-named "blend=>" parameter.
|
||||
#
|
||||
# Also not that "composite -watermark" is actually known as the compose
|
||||
# method "Modulate".
|
||||
#
|
||||
# Essentually each image is equivelent to
|
||||
# convert logo: -crop 80x80+140+60 +repage \
|
||||
# -size 60x60 gradient:black-white \
|
||||
# -alpha set miff:- |\
|
||||
# composite - -geometry +10+10 -virtual-pixel gray \
|
||||
# -dissolve 70x30 show:
|
||||
# for various composition methods.
|
||||
#
|
||||
use strict;
|
||||
use Image::Magick;
|
||||
|
||||
# Background or Destination image
|
||||
my $dest=Image::Magick->new();
|
||||
$dest->Read('logo:');
|
||||
$dest->Crop('100x100+400+100'); # wizards hat
|
||||
$dest->Set(page=>'0x0+0+0');
|
||||
$dest->Set(alpha=>'Set');
|
||||
|
||||
# Source, Composite or Overlay image
|
||||
my $src=Image::Magick->new();
|
||||
$src->Set(size=>'80x80');
|
||||
$src->Read('gradient:black-white');
|
||||
$src->Set(alpha=>'Set');
|
||||
|
||||
my $offset="+10+10";
|
||||
|
||||
# Circle Mask Image (same size as Destination)
|
||||
my $circle=Image::Magick->new();
|
||||
$circle->Set(size=>'100x100');
|
||||
$circle->Read('xc:black');
|
||||
$circle->Draw(fill=>'white',primitive=>'circle',points=>'49.5,49.5 10,49.5');
|
||||
|
||||
my $texture=Image::Magick->new();
|
||||
$texture->Read('pattern:checkerboard');
|
||||
|
||||
# List of images generated
|
||||
my $results=Image::Magick->new();
|
||||
|
||||
# Working copy of Destination Image
|
||||
my $clone;
|
||||
|
||||
# ----------------------------------------
|
||||
# Normal Composition Methods
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Over\n(normal compose)');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'over',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Multiply\n(add black)');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'multiply',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Screen\n(add white)');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'screen',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('HardLight\n(light effects)');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'hardlight',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
# ---------------
|
||||
# Masked and Blending Demonstartion
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Circle Masked\n(three image)');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
mask=>$circle,
|
||||
compose=>'over',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Blend 50x50\n(50% plus 50%)');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'blend',
|
||||
args=>'50x50',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Dissolve 50x50\n(50% over 50%)');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'dissolve',
|
||||
args=>'50x50',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Dissolve 50\n(50% over 100%)');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'dissolve',
|
||||
args=>'50',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
# ---------------
|
||||
# Displacement Demonstartion
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Displace 50x0\n(displace horiz)');
|
||||
$clone->Set('virtual-pixel'=>'gray');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'displace',
|
||||
args=>'50x0',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Displace 0x50\n(compress vert)');
|
||||
$clone->Set('virtual-pixel'=>'gray');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'displace',
|
||||
args=>'0x50',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Displace 50x50\n(diagonal)');
|
||||
$clone->Set('virtual-pixel'=>'gray');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'displace',
|
||||
args=>'50x50',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Displace 0,-80\n(displace flip)');
|
||||
$clone->Set('virtual-pixel'=>'gray');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'displace',
|
||||
args=>'0,-80',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
# ---------------
|
||||
# Demonstrate rotation
|
||||
# note that offset is automatically adjusted to keep rotated image
|
||||
# centered relative to its '0' rotation position
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Rotate 0\n');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'over',
|
||||
rotate=>0,
|
||||
background=>'none',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Rotate 10\n');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'over',
|
||||
rotate=>10,
|
||||
background=>'none',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Rotate 45\n');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'over',
|
||||
rotate=>45,
|
||||
background=>'none',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
$clone=$dest->Clone();
|
||||
$clone->Label('Rotate 90\n');
|
||||
$clone->Composite(
|
||||
image=>$src,
|
||||
compose=>'over',
|
||||
rotate=>90,
|
||||
background=>'none',
|
||||
geometry=>$offset,
|
||||
);
|
||||
push(@$results, $clone);
|
||||
|
||||
# ----------------------------------------
|
||||
# Output the changed pixels
|
||||
|
||||
# to every image underlay a checkboard pattern
|
||||
# so as to show if any transparency is present
|
||||
for my $image ( @$results ) {
|
||||
$image->Composite(
|
||||
image=>$texture,
|
||||
tile=>'True',
|
||||
compose=>'DstOver',
|
||||
);
|
||||
}
|
||||
|
||||
my $montage=$results->Montage(
|
||||
geometry=>'+10+10',
|
||||
tile=>'4x',
|
||||
frame=>'6x6+2+2',
|
||||
shadow=>'True',
|
||||
);
|
||||
$montage->Write('show:');
|
||||
$montage->Write('compose_specials.jpg');
|
||||
|
44
ImageMagick/PerlMagick/demo/composite.pl
Normal file
|
@ -0,0 +1,44 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use Image::Magick;
|
||||
|
||||
#$font = '-adobe-helvetica-medium-r-normal--25-180-100-100-p-130-iso8729-1';
|
||||
#$font = 'Times';
|
||||
$font = 'Generic.ttf';
|
||||
|
||||
$image = Image::Magick->new();
|
||||
$smile = Image::Magick->new();
|
||||
$smile->Read('smile.gif');
|
||||
$smile->Set(background=>'none');
|
||||
$x = 100;
|
||||
$y = 100;
|
||||
for ($angle=0; $angle < 360; $angle+=30)
|
||||
{
|
||||
my ($thumbnail);
|
||||
|
||||
print "angle $angle\n";
|
||||
$thumbnail=Image::Magick->new(size=>"600x600",pointsize=>24,font=>$font,
|
||||
fill=>'black');
|
||||
$thumbnail->Read("xc:white");
|
||||
$thumbnail->Draw(primitive=>'line',points=>"300,100 300,500",stroke=>'#600');
|
||||
$thumbnail->Draw(primitive=>'line',points=>"100,300 500,300",stroke=>'#600');
|
||||
$thumbnail->Draw(primitive=>'rectangle',points=>"100,100 500,500",
|
||||
fill=>'none',stroke=>'#600');
|
||||
$thumbnail->Composite(image=>$smile,gravity=>"NorthWest",x=>$x,y=>$y,
|
||||
rotate=>$angle);
|
||||
$thumbnail->Composite(image=>$smile,gravity=>"North",y=>$y,rotate=>$angle);
|
||||
$thumbnail->Composite(image=>$smile,gravity=>"NorthEast",x=>$x,y=>$y,
|
||||
rotate=>$angle);
|
||||
$thumbnail->Composite(image=>$smile,gravity=>"West",x=>$x,rotate=>$angle);
|
||||
$thumbnail->Composite(image=>$smile,gravity=>"Center",rotate=>$angle);
|
||||
$thumbnail->Composite(image=>$smile,gravity=>"East",x=>$x,rotate=>$angle);
|
||||
$thumbnail->Composite(image=>$smile,gravity=>"SouthWest",x=>$x,y=>$y,
|
||||
rotate=>$angle);
|
||||
$thumbnail->Composite(image=>$smile,gravity=>"South",y=>$y,rotate=>$angle);
|
||||
$thumbnail->Composite(image=>$smile,gravity=>"SouthEast",x=>$x,y=>$y,
|
||||
rotate=>$angle);
|
||||
push(@$image,$thumbnail);
|
||||
}
|
||||
$image->Set(delay=>20);
|
||||
$image->Write("composite.miff");
|
||||
$image->Animate();
|
483
ImageMagick/PerlMagick/demo/demo.pl
Normal file
|
@ -0,0 +1,483 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Overall demo of the major PerlMagick methods.
|
||||
#
|
||||
use Image::Magick;
|
||||
|
||||
#
|
||||
# Read model & smile image.
|
||||
#
|
||||
print "Read...\n";
|
||||
$null=Image::Magick->new;
|
||||
$null->Set(size=>'70x70');
|
||||
$x=$null->ReadImage('NULL:black');
|
||||
warn "$x" if "$x";
|
||||
|
||||
$model=Image::Magick->new();
|
||||
$x=$model->ReadImage('model.gif');
|
||||
warn "$x" if "$x";
|
||||
$model->Label('Magick');
|
||||
$model->Set(background=>'white');
|
||||
|
||||
$smile=Image::Magick->new;
|
||||
$x=$smile->ReadImage('smile.gif');
|
||||
warn "$x" if "$x";
|
||||
$smile->Label('Smile');
|
||||
$smile->Set(background=>'white');
|
||||
#
|
||||
# Create image stack.
|
||||
#
|
||||
print "Transform image...\n";
|
||||
$images=Image::Magick->new();
|
||||
|
||||
print "Adaptive Blur...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Adaptive Blur');
|
||||
$example->AdaptiveBlur('0x1');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Adaptive Resize...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Adaptive Resize');
|
||||
$example->AdaptiveResize('60%');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Adaptive Sharpen...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Adaptive Sharpen');
|
||||
$example->AdaptiveSharpen('0x1');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Adaptive Threshold...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Adaptive Threshold');
|
||||
$example->AdaptiveThreshold('5x5+5%');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Add Noise...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Add Noise');
|
||||
$example->AddNoise("Laplacian");
|
||||
push(@$images,$example);
|
||||
|
||||
print "Annotate...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Annotate');
|
||||
$example->Annotate(text=>'Magick',geometry=>'+0+20',font=>'Generic.ttf',
|
||||
fill=>'gold',gravity=>'North',pointsize=>14);
|
||||
push(@$images,$example);
|
||||
|
||||
print "Auto-gamma...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Auto Gamma');
|
||||
$example->AutoGamma();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Auto-level...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Auto Level');
|
||||
$example->AutoLevel();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Blur...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Blur');
|
||||
$example->Blur('0.0x1.0');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Border...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Border');
|
||||
$example->Border(geometry=>'6x6',color=>'gold');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Channel...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Channel');
|
||||
$example->Channel(channel=>'red');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Charcoal...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Charcoal');
|
||||
$example->Charcoal('0x1');
|
||||
push(@$images,$example);
|
||||
|
||||
print "ColorMatrix...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('ColorMatrix');
|
||||
$example->ColorMatrix([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0.5, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
|
||||
push(@$images,$example);
|
||||
|
||||
print "Composite...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Composite');
|
||||
$example->Composite(image=>$smile,compose=>'over',geometry=>'+35+65');
|
||||
$example->Clamp();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Contrast...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Contrast');
|
||||
$example->Contrast();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Contrast Stretch...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Contrast Stretch');
|
||||
$example->ContrastStretch('5%');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Convolve...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Convolve');
|
||||
$example->Convolve([1, 1, 1, 1, 4, 1, 1, 1, 1]);
|
||||
push(@$images,$example);
|
||||
|
||||
print "Crop...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Crop');
|
||||
$example->Crop(geometry=>'80x80+25+50');
|
||||
$example->Set(page=>'0x0+0+0');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Despeckle...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Despeckle');
|
||||
$example->Despeckle();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Distort...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Distort');
|
||||
$example->Distort(method=>'arc',points=>[60],'virtual-pixel'=>'white');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Draw...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Draw');
|
||||
$example->Draw(fill=>'none',stroke=>'gold',primitive=>'circle',
|
||||
points=>'60,90 60,120',strokewidth=>2);
|
||||
push(@$images,$example);
|
||||
|
||||
print "Detect Edges...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Detect Edges');
|
||||
$example->Edge();
|
||||
$example->Clamp();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Emboss...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Emboss');
|
||||
$example->Emboss('0x1');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Encipher...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Encipher');
|
||||
$example->Encipher('Magick');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Equalize...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Equalize');
|
||||
$example->Equalize();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Implode...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Explode');
|
||||
$example->Implode(-1);
|
||||
push(@$images,$example);
|
||||
|
||||
print "Flip...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Flip');
|
||||
$example->Flip();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Flop...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Flop');
|
||||
$example->Flop();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Frame...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Frame');
|
||||
$example->Frame('15x15+3+3');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Fx...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Fx');
|
||||
push(@$images,$example->Fx(expression=>'0.5*u'));
|
||||
|
||||
print "Gamma...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Gamma');
|
||||
$example->Gamma(1.6);
|
||||
push(@$images,$example);
|
||||
|
||||
print "Gaussian Blur...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Gaussian Blur');
|
||||
$example->GaussianBlur('0.0x1.5');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Gradient...\n";
|
||||
$gradient=Image::Magick->new;
|
||||
$gradient->Set(size=>'130x194');
|
||||
$x=$gradient->ReadImage('gradient:#20a0ff-#ffff00');
|
||||
warn "$x" if "$x";
|
||||
$gradient->Label('Gradient');
|
||||
push(@$images,$gradient);
|
||||
|
||||
print "Grayscale...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Grayscale');
|
||||
$example->Set(type=>'grayscale');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Implode...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Implode');
|
||||
$example->Implode(0.5);
|
||||
push(@$images,$example);
|
||||
|
||||
print "Level...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Level');
|
||||
$example->Level('20%x');
|
||||
$example->Clamp();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Median Filter...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Median Filter');
|
||||
$example->MedianFilter();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Mode...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Mode');
|
||||
$example->Mode();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Modulate...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Modulate');
|
||||
$example->Modulate(brightness=>110,saturation=>110,hue=>110);
|
||||
push(@$images,$example);
|
||||
$example=$model->Clone();
|
||||
|
||||
print "Monochrome...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Monochrome');
|
||||
$example->Quantize(colorspace=>'gray',colors=>2,dither=>'false');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Morphology...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Morphology');
|
||||
$example->Morphology(method=>'Dilate',kernel=>'Diamond',iterations=>2);
|
||||
push(@$images,$example);
|
||||
|
||||
print "Motion Blur...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Motion Blur');
|
||||
$example->MotionBlur('0x13+10-10');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Negate...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Negate');
|
||||
$example->Negate();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Normalize...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Normalize');
|
||||
$example->Normalize();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Oil Paint...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Oil Paint');
|
||||
$example->OilPaint();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Plasma...\n";
|
||||
$plasma=Image::Magick->new;
|
||||
$plasma->Set(size=>'130x194');
|
||||
$x=$plasma->ReadImage('plasma:fractal');
|
||||
warn "$x" if "$x";
|
||||
$plasma->Label('Plasma');
|
||||
push(@$images,$plasma);
|
||||
|
||||
print "Polaroid...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Polaroid');
|
||||
$example->Polaroid(caption=>'Magick',angle=>-5.0,gravity=>'center');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Posterize...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Posterize');
|
||||
$example->Posterize(5);
|
||||
push(@$images,$example);
|
||||
|
||||
print "Quantize...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Quantize');
|
||||
$example->Quantize();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Radial Blur...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Radial Blur');
|
||||
$example->RadialBlur(10);
|
||||
push(@$images,$example);
|
||||
|
||||
print "Raise...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Raise');
|
||||
$example->Raise('10x10');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Reduce Noise...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Reduce Noise');
|
||||
$example->ReduceNoise();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Resize...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Resize');
|
||||
$example->Resize('60%');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Roll...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Roll');
|
||||
$example->Roll(geometry=>'+20+10');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Rotate...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Rotate');
|
||||
$example->Rotate(45);
|
||||
push(@$images,$example);
|
||||
|
||||
print "Sample...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Sample');
|
||||
$example->Sample('60%');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Scale...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Scale');
|
||||
$example->Scale('60%');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Segment...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Segment');
|
||||
$example->Segment();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Shade...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Shade');
|
||||
$example->Shade(geometry=>'30x30',gray=>'true');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Sharpen...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Sharpen');
|
||||
$example->Sharpen('0.0x1.0');
|
||||
$example->Clamp();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Shave...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Shave');
|
||||
$example->Shave('10x10');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Shear...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Shear');
|
||||
$example->Shear('-20x20');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Sketch...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Sketch');
|
||||
$example->Set(colorspace=>'Gray');
|
||||
$example->Sketch('0x20+120');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Sigmoidal Contrast...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Sigmoidal Contrast');
|
||||
$example->SigmoidalContrast("3x50%");
|
||||
push(@$images,$example);
|
||||
|
||||
print "Spread...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Spread');
|
||||
$example->Spread();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Solarize...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Solarize');
|
||||
$example->Solarize();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Swirl...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Swirl');
|
||||
$example->Swirl(90);
|
||||
push(@$images,$example);
|
||||
|
||||
print "Unsharp Mask...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Unsharp Mask');
|
||||
$example->UnsharpMask('0.0x1.0');
|
||||
$example->Clamp();
|
||||
push(@$images,$example);
|
||||
|
||||
print "Vignette...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Vignette');
|
||||
$example->Vignette('0x20');
|
||||
push(@$images,$example);
|
||||
|
||||
print "Wave...\n";
|
||||
$example=$model->Clone();
|
||||
$example->Label('Wave');
|
||||
$example->Wave('25x150');
|
||||
push(@$images,$example);
|
||||
#
|
||||
# Create image montage.
|
||||
#
|
||||
print "Montage...\n";
|
||||
$montage=$images->Montage(geometry=>'128x160+8+4>',gravity=>'Center',
|
||||
tile=>'5x+10+200',compose=>'over',background=>'#ffffff',
|
||||
font=>'Generic.ttf',pointsize=>18,fill=>'#600',stroke=>'none',
|
||||
shadow=>'true');
|
||||
|
||||
$logo=Image::Magick->new();
|
||||
$logo->Read('logo:');
|
||||
$logo->Zoom('40%');
|
||||
$montage->Composite(image=>$logo,gravity=>'North');
|
||||
|
||||
print "Write...\n";
|
||||
$montage->Set(matte=>'false');
|
||||
$montage->Write('demo.jpg');
|
||||
print "Display...\n";
|
||||
$montage->Write('win:');
|
BIN
ImageMagick/PerlMagick/demo/dst.png
Normal file
After Width: | Height: | Size: 437 B |
83
ImageMagick/PerlMagick/demo/lsys.pl
Normal file
|
@ -0,0 +1,83 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
# Written by jreed@itis.com, adapted by John Cristy.
|
||||
|
||||
use Image::Magick;
|
||||
use Turtle;
|
||||
|
||||
sub flower
|
||||
{
|
||||
my $flower = shift;
|
||||
my ($width, $height) = $flower->Get('width', 'height');
|
||||
my ($x, $y) = $turtle->state();
|
||||
my ($geometry);
|
||||
|
||||
$geometry = '+' . int($x-$width/2) . '+' . int($y-$height/2);
|
||||
$im->Composite(image=>$flower, compose=>'over', geometry=>$geometry);
|
||||
}
|
||||
|
||||
sub lsys_init
|
||||
{
|
||||
my ($imagesize) = @_;
|
||||
|
||||
%translate =
|
||||
(
|
||||
'S' => sub{ # Step forward
|
||||
$turtle->forward($changes->{"distance"},
|
||||
$changes->{"motionsub"});
|
||||
},
|
||||
'-' => sub{ $turtle->turn(-$changes->{"dtheta"}); }, # counter-clockwise
|
||||
'+' => sub{ $turtle->turn($changes->{"dtheta"}); }, # Turn clockwise
|
||||
'M' => sub{ $turtle->mirror(); }, # Mirror
|
||||
'[' => sub{ push(@statestack, [$turtle->state()]); }, # Begin branch
|
||||
']' => sub{ $turtle->setstate(@{pop(@statestack)}); }, # End branch
|
||||
'{' => sub{ @poly = (); $changes=\%polychanges; }, # Begin polygon
|
||||
'}' => sub{ # End polygon
|
||||
$im->Draw (primitive=>'Polygon', points=>join(' ',@poly),
|
||||
fill=>'light green');
|
||||
$changes = \%stemchanges;
|
||||
},
|
||||
'f' => sub{ flower($pink_flower); }, # Flower
|
||||
'g' => sub{ flower($red_flower); }, # Flower
|
||||
'h' => sub{ flower($yellow_flower); } # Flower
|
||||
);
|
||||
|
||||
# Create the main image
|
||||
$im = new Image::Magick;
|
||||
$im->Set(size=>$imagesize . 'x' . $imagesize);
|
||||
$im->Read('xc:white');
|
||||
|
||||
# Create the flower images
|
||||
$pink_flower = new Image::Magick;
|
||||
$pink_flower->Read('pink-flower.gif');
|
||||
|
||||
$red_flower = new Image::Magick;
|
||||
$red_flower->Read('red-flower.gif');
|
||||
|
||||
$yellow_flower = new Image::Magick;
|
||||
$yellow_flower->Read('yellow-flower.gif');
|
||||
|
||||
# Turtle: the midpoint of the bottom edge of the image, pointing up.
|
||||
$turtle=new Turtle($imagesize/2, $imagesize, 0, 1);
|
||||
}
|
||||
|
||||
sub lsys_execute
|
||||
{
|
||||
my ($string, $repetitions, $filename, %rule) = @_;
|
||||
|
||||
my ($command);
|
||||
|
||||
# Apply the %rule to $string, $repetitions times.
|
||||
for (1..$repetitions)
|
||||
{
|
||||
$string =~ s/./defined ($rule{$&}) ? $rule{$&} : $&/eg;
|
||||
}
|
||||
foreach $command (split(//, $string))
|
||||
{
|
||||
if ($translate{$command}) { &{$translate{$command}}(); }
|
||||
}
|
||||
$im->Write($filename);
|
||||
$im->Write('win:');
|
||||
}
|
||||
|
||||
1;
|
BIN
ImageMagick/PerlMagick/demo/model.gif
Normal file
After Width: | Height: | Size: 23 KiB |
66
ImageMagick/PerlMagick/demo/piddle.pl
Normal file
|
@ -0,0 +1,66 @@
|
|||
#!/usr/bin/perl
|
||||
# Piddle example using PerlMagick methods.
|
||||
|
||||
use Image::Magick;
|
||||
|
||||
#
|
||||
# Create white canvas.
|
||||
#
|
||||
$image=Image::Magick->new(size=>'300x300');
|
||||
$image->Read('xc:white');
|
||||
#
|
||||
# Draw blue grid
|
||||
#
|
||||
for ($i=0; $i < 300; $i+=10)
|
||||
{
|
||||
$image->Draw(primitive=>'line',points=>"$i,0 $i,300",stroke=>"#ccf");
|
||||
$image->Draw(primitive=>'line',points=>"0,$i 300,$i",stroke=>"#ccf");
|
||||
}
|
||||
#
|
||||
# Draw rounded rectangle.
|
||||
#
|
||||
$image->Draw(primitive=>'RoundRectangle',fill=>'blue',stroke=>'maroon',
|
||||
strokewidth=>4,points=>'30,30 100,100 10,10');
|
||||
#
|
||||
# Draw curve.
|
||||
#
|
||||
$image->Draw(primitive=>'bezier',points=>'20,20, 100,50, 50,100, 160,160',
|
||||
fill=>'none',stroke=>'black',strokewidth=>4);
|
||||
#
|
||||
# Draw line.
|
||||
#
|
||||
$image->Draw(primitive=>'line',points=>"10,200 20,190",stroke=>red);
|
||||
#
|
||||
# Draw arc within a circle.
|
||||
#
|
||||
$image->Draw(primitive=>'circle',stroke=>'none',fill=>'yellow',,
|
||||
points=>"170,70 200,70");
|
||||
$image->Draw(primitive=>'Path',stroke=>'none',fill=>'blue',strokewidth=>4,
|
||||
points=>'M170,70 v-30 a30,30 0 0,0 -30,30 z');
|
||||
$image->Draw(primitive=>'circle',stroke=>'black',fill=>'none',strokewidth=>4,
|
||||
points=>"170,70 200,70");
|
||||
#
|
||||
# Draw pentogram.
|
||||
#
|
||||
$image->Draw(primitive=>'polygon',
|
||||
points=>"160,120 130,190 210,145 110,145 190,190 160,120",stroke=>red,
|
||||
fill=>LimeGreen,strokewidth=>3);
|
||||
#
|
||||
# Draw rectangle.
|
||||
#
|
||||
$image->Draw(primitive=>'line',points=>'200,260 200,200',stroke=>yellow,
|
||||
strokewidth=>5);
|
||||
$image->Draw(primitive=>'line',points=>'200,200 260,200',stroke=>yellow,
|
||||
strokewidth=>5);
|
||||
$image->Draw(primitive=>'line',points=>'260,200 260,260',stroke=>red,
|
||||
strokewidth=>5);
|
||||
$image->Draw(primitive=>'line',points=>'200,260 260,260',stroke=>green,
|
||||
strokewidth=>5);
|
||||
#
|
||||
# Draw text.
|
||||
#
|
||||
$image->Annotate(text=>'This is a test!',geometry=>'+30+140',
|
||||
font=>'Generic.ttf',fill=>'green',pointsize=>24,rotate=>45.0);
|
||||
$image->Write('piddle.gif');
|
||||
$image->Write('piddle.mvg');
|
||||
$image->Write('win:');
|
BIN
ImageMagick/PerlMagick/demo/pink-flower.gif
Normal file
After Width: | Height: | Size: 544 B |
53
ImageMagick/PerlMagick/demo/pixel-fx.pl
Executable file
|
@ -0,0 +1,53 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Example of modifying all the pixels in an image (like -fx).
|
||||
#
|
||||
# Currently this is slow as each pixel is being lokedup one pixel at a time.
|
||||
# The better technique of extracting and modifing a whole row of pixels at
|
||||
# a time has not been figured out, though perl functions have been provided
|
||||
# for this.
|
||||
#
|
||||
# Also access and controls for Area Re-sampling (EWA), beyond single pixel
|
||||
# lookup (interpolated unscaled lookup), is also not available at this time.
|
||||
#
|
||||
# Anthony Thyssen 5 October 2007
|
||||
#
|
||||
use strict;
|
||||
use Image::Magick;
|
||||
|
||||
# read original image
|
||||
my $orig = Image::Magick->new();
|
||||
my $w = $orig->Read('rose:');
|
||||
warn("$w") if $w;
|
||||
exit if $w =~ /^Exception/;
|
||||
|
||||
|
||||
# make a clone of the image (preserve input, modify output)
|
||||
my $dest = $orig->Clone();
|
||||
|
||||
# You could enlarge destination image here if you like.
|
||||
# And it is posible to modify the existing image directly
|
||||
# rather than modifying a clone as FX does.
|
||||
|
||||
# Iterate over destination image...
|
||||
my ($width, $height) = $dest->Get('width', 'height');
|
||||
|
||||
for( my $j = 0; $j < $height; $j++ ) {
|
||||
for( my $i = 0; $i < $width; $i++ ) {
|
||||
|
||||
# read original image color
|
||||
my @pixel = $orig->GetPixel( x=>$i, y=>$j );
|
||||
|
||||
# modify the pixel values (as normalized floats)
|
||||
$pixel[0] = $pixel[0]/2; # darken red
|
||||
|
||||
# write pixel to destination
|
||||
# (quantization and clipping happens here)
|
||||
$dest->SetPixel(x=>$i,y=>$j,color=>\@pixel);
|
||||
}
|
||||
}
|
||||
|
||||
# display the result (or you could save it)
|
||||
$dest->Write('win:');
|
||||
$dest->Write('pixel-fx.gif');
|
||||
|
BIN
ImageMagick/PerlMagick/demo/red-flower.gif
Normal file
After Width: | Height: | Size: 694 B |
32
ImageMagick/PerlMagick/demo/settings.pl
Executable file
|
@ -0,0 +1,32 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# An example of applying many settings in preparation for image creation.
|
||||
#
|
||||
# Extracted from PerlMagick Discussion forums..
|
||||
# Gravity center, caption and wrapped text
|
||||
# http://www.imagemagick.org/discourse-server/viewtopic.php?f=7&t=17282
|
||||
#
|
||||
use strict;
|
||||
use warnings;
|
||||
use Image::Magick;
|
||||
|
||||
my $im = new Image::Magick;
|
||||
my $e = $im->Set(
|
||||
background => 'none',
|
||||
fill => 'white',
|
||||
stroke => 'black',
|
||||
strokewidth => 2,
|
||||
Gravity => 'East',
|
||||
pointsize => 48,
|
||||
size => '200x300',
|
||||
);
|
||||
die $e if $e;
|
||||
|
||||
$e = $im->Read("caption:Lorem ipsum etc etc");
|
||||
die $e if $e;
|
||||
|
||||
$e = $im->Trim();
|
||||
die $e if $e;
|
||||
|
||||
$e = $im->Write('settings.png');
|
||||
die $e if $e;
|
15
ImageMagick/PerlMagick/demo/shadow-text.pl
Normal file
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Make simple text with a shadow.
|
||||
#
|
||||
use Image::Magick;
|
||||
|
||||
$image=Image::Magick->new(size=>'500x120');
|
||||
$image->Read('xc:white');
|
||||
$image->Annotate(font=>'Generic.ttf',fill=>'rgba(100,100,100,0.8)',
|
||||
pointsize=>60, text=>'Works like magick!',geometry=>'+30+90');
|
||||
$image->Blur('0x1');
|
||||
$image->Annotate(font=>'Generic.ttf',fill=>'red',stroke=>'blue',pointsize=>60,
|
||||
text=>'Works like magick!',geometry=>'+26+86');
|
||||
$image->Write('shadow.gif');
|
||||
$image->Write('win:');
|
40
ImageMagick/PerlMagick/demo/shapes.pl
Normal file
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/perl
|
||||
# GD example using PerlMagick methods.
|
||||
|
||||
use Image::Magick;
|
||||
|
||||
#
|
||||
# Create a 300x300 white canvas.
|
||||
#
|
||||
$image=Image::Magick->new;
|
||||
$image->Set(size=>'300x300');
|
||||
$image->Read('xc:white');
|
||||
#
|
||||
# Draw shapes.
|
||||
#
|
||||
$tile=Image::Magick->new;
|
||||
$tile->Read('tile.gif');
|
||||
$image->Draw(primitive=>'Polygon',tile=>$tile,fill=>'none',
|
||||
points=>'30,30 100,10 190,290 30,290');
|
||||
$image->Draw(stroke=>'red',primitive=>'Ellipse',stroke=>'black',fill=>'red',
|
||||
strokewidth=>5,points=>'100,100 50,75 0,360');
|
||||
$image->Draw(primitive=>'Polygon',fill=>'none',stroke=>'black',strokewidth=>5,
|
||||
points=>'30,30 100,10 190,290 30,290');
|
||||
$image->FloodfillPaint(geometry=>'+132+62',fill=>'blue',bordercolor=>'black',
|
||||
invert=>'true');
|
||||
#
|
||||
# Draw text.
|
||||
#
|
||||
$image->Annotate(fill=>'red',geometry=>'+150+20',font=>'Generic.ttf',
|
||||
pointsize=>18,text=>'Hello world!');
|
||||
$image->Annotate(fill=>'blue',geometry=>'+150+38',font=>'Generic.ttf',
|
||||
pointsize=>14,text=>'Goodbye cruel world!');
|
||||
$image->Annotate(fill=>'black',geometry=>'+280+120',font=>'Generic.ttf',
|
||||
pointsize=>14,text=>"I'm climbing the wall!",rotate=>90.0);
|
||||
#
|
||||
# Write image.
|
||||
#
|
||||
print "Write image...\n";
|
||||
$image->Write('shapes.gif');
|
||||
print "Display image...\n";
|
||||
$image->Write('win:');
|
48
ImageMagick/PerlMagick/demo/single-pixels.pl
Executable file
|
@ -0,0 +1,48 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Methods for to Get and Set single pixels in images using PerlMagick
|
||||
#
|
||||
use strict;
|
||||
use Image::Magick;
|
||||
|
||||
# read image
|
||||
my $im=Image::Magick->new();
|
||||
$im->Read('logo:');
|
||||
|
||||
# ---
|
||||
|
||||
# Get/Set a single pixel as a string
|
||||
my $skin=$im->Get('pixel[400,200]');
|
||||
print "Get('pixel[x,y]') = ", $skin, "\n";
|
||||
|
||||
$im->Set('pixel[1,1]'=>'0,0,0,0');
|
||||
$im->Set('pixel[2,1]'=>$skin);
|
||||
$im->Set('pixel[3,1]'=>'green');
|
||||
$im->Set('pixel[4,1]'=>'rgb(255,0,255)');
|
||||
|
||||
# ---
|
||||
|
||||
# More direct single pixel access
|
||||
my @pixel = $im->GetPixel( x=>400, y=>200 );
|
||||
print "GetPixel() = ", "@pixel", "\n";
|
||||
|
||||
# modify the pixel values (as normalized floats)
|
||||
$pixel[0] = $pixel[0]/2; # darken red value
|
||||
$pixel[1] = 0.0; # junk green value
|
||||
$pixel[2] = 0.0; # junk blue value
|
||||
|
||||
# write pixel to destination
|
||||
# (quantization and clipping happens here)
|
||||
$im->SetPixel(x=>5,y=>1,color=>\@pixel);
|
||||
|
||||
# ---
|
||||
|
||||
# crop, scale, display the changed pixels
|
||||
$im->Crop(geometry=>'7x3+0+0');
|
||||
$im->Set(page=>'0x0+0+0');
|
||||
$im->Scale('1000%');
|
||||
|
||||
# Output the changed pixels
|
||||
$im->Write('win:');
|
||||
$im->Write('single-pixels.gif');
|
||||
|
BIN
ImageMagick/PerlMagick/demo/smile.gif
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
ImageMagick/PerlMagick/demo/src.png
Normal file
After Width: | Height: | Size: 400 B |
26
ImageMagick/PerlMagick/demo/steganography.pl
Normal file
|
@ -0,0 +1,26 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use Image::Magick;
|
||||
|
||||
#
|
||||
# Hide an image within an image
|
||||
#
|
||||
$watermark=Image::Magick->new;
|
||||
$watermark->ReadImage('smile.gif');
|
||||
($width, $height)=$watermark->Get('width','height');
|
||||
#
|
||||
# Hide image in image.
|
||||
#
|
||||
$image=Image::Magick->new;
|
||||
$image->ReadImage('model.gif');
|
||||
$image->SteganoImage(image=>$watermark,offset=>91);
|
||||
$image->Write('model.png');
|
||||
$image->Write('win:');
|
||||
#
|
||||
# Extract image from image.
|
||||
#
|
||||
$size="$width" . "x" . "$height" . "+91";
|
||||
$stegano=Image::Magick->new(size=>$size);
|
||||
$stegano->ReadImage('stegano:model.png');
|
||||
$stegano->Write('stegano.gif');
|
||||
$stegano->Write('win:');
|
BIN
ImageMagick/PerlMagick/demo/tile.gif
Normal file
After Width: | Height: | Size: 1.5 KiB |
33
ImageMagick/PerlMagick/demo/tree.pl
Normal file
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Example of using a lsys fractal,
|
||||
# which in turm used Turtle Graphics
|
||||
#
|
||||
require "lsys.pl";
|
||||
|
||||
%rule = (
|
||||
'A' => 'S[---LMA][++++B]',
|
||||
'B' => 'S[++LBg][--Cg]',
|
||||
'C' => 'S[-----LB]GS[+MC]',
|
||||
'g' => '',
|
||||
'L' => '[{S+S+S+S+S+S}]'
|
||||
);
|
||||
|
||||
%stemchanges = (
|
||||
distance => 18.5,
|
||||
dtheta => 0.1,
|
||||
motionsub => sub{
|
||||
$im->Draw ( primitive=>'line', points=>join(' ',@_),
|
||||
stroke=>'dark green', strokewidth=>1 );
|
||||
}
|
||||
);
|
||||
|
||||
%polychanges = (
|
||||
distance => 3,
|
||||
dtheta => 0.4,
|
||||
motionsub => sub{ push( @poly, @_[0..1] ); }
|
||||
);
|
||||
|
||||
$changes = \%stemchanges;
|
||||
lsys_init(400);
|
||||
lsys_execute('A', 10, "tree.gif", %rule);
|
BIN
ImageMagick/PerlMagick/demo/yellow-flower.gif
Normal file
After Width: | Height: | Size: 565 B |
270
ImageMagick/PerlMagick/quantum/Makefile.PL.in
Normal file
|
@ -0,0 +1,270 @@
|
|||
# Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
|
||||
# dedicated to making software imaging solutions freely available.
|
||||
#
|
||||
# You may not use this file except in compliance with the License. You may
|
||||
# obtain a copy of the License at
|
||||
#
|
||||
# http://www.imagemagick.org/script/license.php
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Exercise all regression tests:
|
||||
#
|
||||
# make test
|
||||
#
|
||||
# Exersise one regression test:
|
||||
#
|
||||
# make TEST_VERBOSE=1 TEST_FILES=t/filter.t test
|
||||
#
|
||||
|
||||
use ExtUtils::MakeMaker;
|
||||
use Config;
|
||||
use File::Spec::Functions qw/catfile catdir devnull catpath splitpath/;
|
||||
use Cwd;
|
||||
|
||||
sub AutodetectWin32gcc {
|
||||
my $wrkdir = getcwd();
|
||||
my $devnull = devnull();
|
||||
|
||||
my @incdir = ();
|
||||
my @libdir = ($wrkdir);
|
||||
my @bindir = ();
|
||||
|
||||
#try to get configuration info via identify or convert utilities
|
||||
my $conf = `identify -list Configure 2>$devnull` || `convert -list Configure 2>$devnull`;
|
||||
foreach my $line (split '\n', $conf) {
|
||||
if ($line =~ /^Path:\s+(.*)/) {
|
||||
my ($vol,$dir,$file) = splitpath($1);
|
||||
next unless $dir;
|
||||
my $dirpath = catpath( $vol, $dir);
|
||||
my (@l,@b,@i) = ( (),(),() );
|
||||
|
||||
# try to detect 'lib' dir
|
||||
push @l, catfile($dirpath,'lib');
|
||||
push @l, catfile($dirpath,'..','lib');
|
||||
push @l, catfile($dirpath,'..','..','lib');
|
||||
push @l, catfile($dirpath,'..','..','..','lib');
|
||||
foreach (@l) { push @libdir, $_ if (-d $_) };
|
||||
|
||||
# try to detect 'bin' dir
|
||||
push @b, catfile($dirpath);
|
||||
push @b, catfile($dirpath,'bin');
|
||||
push @b, catfile($dirpath,'..');
|
||||
push @b, catfile($dirpath,'..','bin');
|
||||
push @b, catfile($dirpath,'..','..');
|
||||
push @b, catfile($dirpath,'..','..','bin');
|
||||
push @b, catfile($dirpath,'..','..','..');
|
||||
push @b, catfile($dirpath,'..','..','..','bin');
|
||||
foreach (@b) { push @bindir, $_ if (-e "$_/convert.exe" || -e "$_/identify.exe") };
|
||||
|
||||
# try to detect 'include' dir
|
||||
push @i, catfile($dirpath,'include');
|
||||
push @i, catfile($dirpath,'include','ImageMagick');
|
||||
push @i, catfile($dirpath,'..','include');
|
||||
push @i, catfile($dirpath,'..','include','ImageMagick');
|
||||
push @i, catfile($dirpath,'..','..','include');
|
||||
push @i, catfile($dirpath,'..','..','include','ImageMagick');
|
||||
push @i, catfile($dirpath,'..','..','..','include');
|
||||
push @i, catfile($dirpath,'..','..','..','include','ImageMagick');
|
||||
foreach (@i) { push @incdir, $_ if (-e "$_/magick/MagickCore.h") };
|
||||
}
|
||||
};
|
||||
|
||||
foreach my $bin (@bindir) {
|
||||
opendir(my $bindir, $bin) or die qq{Cannot opendir $bin: $!};
|
||||
my @dlls = map {catfile($bin, $_)} grep /^\S*magick[^\+]\S*?\.dll$/i, readdir $bindir;
|
||||
foreach my $d (@dlls) {
|
||||
unlink "$wrkdir/libMagickCore.def", "$wrkdir/libMagickCore.a";
|
||||
system("pexports \"$d\" >\"$wrkdir/libMagickCore.def\" 2>$devnull");
|
||||
open(DEF, "<$wrkdir/libMagickCore.def");
|
||||
my @found = grep(/MagickCoreGenesis/, <DEF>); #checking if we have taken the right DLL
|
||||
close(DEF);
|
||||
next unless(@found);
|
||||
print STDERR "Gonna create 'libMagickCore.a' from '$d'\n";
|
||||
system("dlltool -D \"$d\" -d \"$wrkdir/libMagickCore.def\" -l \"$wrkdir/libMagickCore.a\" 2>$devnull");
|
||||
last if -s "$wrkdir/libMagickCore.a";
|
||||
}
|
||||
last if -s "$wrkdir/libMagickCore.a";
|
||||
}
|
||||
|
||||
unless(@incdir && @libdir && @bindir && (-s "$wrkdir/libMagickCore.a")) {
|
||||
print STDERR <<EOF
|
||||
################################### WARNING! ###################################
|
||||
# It seems that you are trying to install Perl::Magick on a MS Windows box with
|
||||
# perl + gcc compiler (e.g. strawberry perl), however we cannot find ImageMagick
|
||||
# binaries installed on your system.
|
||||
#
|
||||
# Please check the following prerequisites:
|
||||
#
|
||||
# 1) You need to have installed ImageMagick Windows binaries from
|
||||
# http://www.imagemagick.org/script/binary-releases.php#windows
|
||||
#
|
||||
# 2) We only support dynamic (DLL) ImageMagick binaries
|
||||
# note: it is not possible to mix 32/64-bit binaries of perl and ImageMagick
|
||||
#
|
||||
# 3) During installation select that you want to install ImageMagick's
|
||||
# development files (libraries+headers)
|
||||
#
|
||||
# 4) You also need to have ImageMagick's directory in your PATH
|
||||
# note: we are checking the presence of convert.exe and/or identify.exe tools
|
||||
#
|
||||
# 5) You might need Visual C++ Redistributable Package installed on your system
|
||||
# see instructions on ImageMagick's Binary Release webpage
|
||||
#
|
||||
# We are gonna continue, but chances for successful build are very low!
|
||||
################################################################################
|
||||
EOF
|
||||
}
|
||||
|
||||
my $inc = join ' ', map "-I\"$_\"", @incdir;
|
||||
my $lib = join ' ', map "-L\"$_\"", @libdir;
|
||||
|
||||
return ($inc, $lib);
|
||||
}
|
||||
|
||||
sub AutodetectDelegates {
|
||||
#try to get configuration info via identify or convert utilities
|
||||
my $devnull = devnull();
|
||||
my $conf = `identify -list Configure 2>$devnull` || `convert -list Configure 2>$devnull`;
|
||||
my @delegates = ();
|
||||
foreach my $line (split '\n', $conf) {
|
||||
next unless $line =~ /^DELEGATES\s+/;
|
||||
(undef, @delegates) = split /\s+/, $line;
|
||||
last;
|
||||
};
|
||||
return @delegates;
|
||||
}
|
||||
|
||||
# Compute test specification
|
||||
my $delegate_tests='t/*.t';
|
||||
my @tested_delegates = qw/bzlib djvu fftw fontconfig freetype jpeg jng jp2 lcms mpeg png rsvg tiff x11 xml wmf zlib/;
|
||||
my @supported_delegates = AutodetectDelegates();
|
||||
# find the intersection of tested and supported delegates
|
||||
my %seen_delegates = ();
|
||||
$seen_delegates{$_}++ for @supported_delegates;
|
||||
foreach my $delegate (@tested_delegates) {
|
||||
if ( $seen_delegates{$delegate} ) {
|
||||
if ( -d "t/$delegate" ) {
|
||||
if ( defined($ENV{'DISPLAY'}) && ($^O ne 'MSWin32') ) {
|
||||
if ( defined $ENV{'DISPLAY'} ) {
|
||||
$delegate_tests .= " t/$delegate/*.t";
|
||||
}
|
||||
next;
|
||||
}
|
||||
$delegate_tests .= " t/$delegate/*.t";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# defaults for LIBS & INC & CCFLAGS params that we later pass to Writemakefile
|
||||
my $INC_magick = '-I../ -I@top_srcdir@ @CPPFLAGS@ -I"' . $Config{'usrinc'} . '/ImageMagick"';
|
||||
my $LIBS_magick = '-L../../magick/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ -lperl @MATH_LIBS@';
|
||||
my $CCFLAGS_magick = "$Config{'ccflags'} @CFLAGS@";
|
||||
my $LDFLAGS_magick = "-L../../magick/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ $Config{'ldflags'} @LDFLAGS@";
|
||||
my $LDDLFLAGS_magick = "-L../../magick/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ $Config{'lddlflags'} @LDFLAGS@";
|
||||
|
||||
if (($^O eq 'MSWin32') && ($Config{cc} =~ /gcc/)) {
|
||||
my($Ipaths, $Lpaths) = AutodetectWin32gcc();
|
||||
|
||||
#
|
||||
# Setup for strawberry perl.
|
||||
#
|
||||
$INC_magick = "$Ipaths";
|
||||
$LIBS_magick = "-lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@";
|
||||
$CCFLAGS_magick = "$Config{'ccflags'}";
|
||||
$LDFLAGS_magick = "$Config{'ldflags'} $Lpaths ";
|
||||
$LDDLFLAGS_magick = "$Config{'lddlflags'} $Lpaths ";
|
||||
}
|
||||
|
||||
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
|
||||
# the contents of the Makefile that is written.
|
||||
WriteMakefile
|
||||
(
|
||||
# Module description
|
||||
'ABSTRACT' => 'ImageMagick PERL Extension (@MAGICK_ABI_SUFFIX@)',
|
||||
|
||||
# Perl module name is Image::Magick
|
||||
'NAME' => 'Image::Magick::@MAGICK_ABI_SUFFIX@',
|
||||
|
||||
# Module author
|
||||
'AUTHOR' => 'ImageMagick Studio LLC',
|
||||
|
||||
# Module version
|
||||
'VERSION' => '@PACKAGE_PERL_VERSION@',
|
||||
|
||||
# Preprocessor defines
|
||||
'DEFINE' => '@LFS_CPPFLAGS@ @DEFS@', # e.g., '-DHAVE_SOMETHING'
|
||||
|
||||
# Header search specfication and preprocessor flags
|
||||
'INC' => $INC_magick,
|
||||
|
||||
# C compiler
|
||||
#'CC' => '@CC@',
|
||||
|
||||
# C pre-processor flags (e.g. -I & -D options)
|
||||
# 'CPPFLAGS' => "$Config{'cppflags'} @CPPFLAGS@",
|
||||
|
||||
# C compiler flags (e.g. -O -g)
|
||||
'CCFLAGS' => $CCFLAGS_magick,
|
||||
|
||||
# Linker
|
||||
#'LD' => $Config{'ld'} == $Config{'cc'} ? '@CC@' : $Config{'ld'},
|
||||
|
||||
# Linker flags for building an executable
|
||||
'LDFLAGS' => $LDFLAGS_magick,
|
||||
|
||||
# Linker flags for building a dynamically loadable module
|
||||
'LDDLFLAGS' => $LDDLFLAGS_magick,
|
||||
|
||||
# Install PerlMagick binary into ImageMagick bin directory
|
||||
'INSTALLBIN' => '@BIN_DIR@',
|
||||
|
||||
# Library specification
|
||||
'LIBS' => [ $LIBS_magick ],
|
||||
|
||||
# Perl binary name (if a Perl binary is built)
|
||||
'MAP_TARGET' => 'PerlMagick',
|
||||
|
||||
# Let CFLAGS drive optimization flags by setting OPTIMIZE to empty
|
||||
# 'OPTIMIZE' => '',
|
||||
|
||||
# Use same compiler as ImageMagick
|
||||
'PERLMAINCC' => '@PERLMAINCC@ @OPENMP_CFLAGS@',
|
||||
'PM' => { '@MAGICK_ABI_SUFFIX@.pm' => '$(INST_LIBDIR)/@MAGICK_ABI_SUFFIX@.pm' },
|
||||
'XS' => { '@MAGICK_ABI_SUFFIX@.xs' => '@MAGICK_ABI_SUFFIX@.xs' },
|
||||
'AR' => '@AR@',
|
||||
'LD' => '@PERLMAINCC@',
|
||||
|
||||
# Set Perl installation prefix to ImageMagick installation prefix
|
||||
# 'PREFIX' => '@prefix@',
|
||||
|
||||
# Include delegate directories in tests
|
||||
test => { TESTS => $delegate_tests},
|
||||
|
||||
($Config{'archname'} =~ /-object$/i ? ('CAPI' => 'TRUE') : ()),
|
||||
|
||||
# sane vesion
|
||||
depend => { '$(FIRST_MAKEFILE)' => '$(VERSION_FROM)' }
|
||||
);
|
||||
|
||||
|
||||
#
|
||||
# Substitutions for "makeaperl" section.
|
||||
#
|
||||
sub MY::makeaperl {
|
||||
package MY; # so that "SUPER" works right
|
||||
my $inherited = shift->SUPER::makeaperl(@_);
|
||||
|
||||
# Stinky ExtUtils::MM_Unix likes to append its own library path to $(CC),
|
||||
# prior to any user-specified library path so that an installed library is
|
||||
# used rather than the library just built. This substitution function
|
||||
# tries to insert our library path first. Also, use the same compiler used
|
||||
# to build perlmain.c to link so that a C++ compiler may be used if
|
||||
# necessary.
|
||||
$inherited =~ s:MAP_LINKCMD\s.*\s*\$\(CC\):MAP_LINKCMD = \$(PERLMAINCC) -L@MAGICKCORE_PATH@: ;
|
||||
$inherited;
|
||||
}
|
144
ImageMagick/PerlMagick/quantum/quantum.pm.in
Normal file
|
@ -0,0 +1,144 @@
|
|||
package Image::Magick::@MAGICK_ABI_SUFFIX@;
|
||||
|
||||
# Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
|
||||
# dedicated to making software imaging solutions freely available.
|
||||
#
|
||||
# You may not use this file except in compliance with the License. You may
|
||||
# obtain a copy of the License at
|
||||
#
|
||||
# http://www.imagemagick.org/script/license.php
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Initial version, written by Kyle Shorter.
|
||||
|
||||
use strict;
|
||||
use Carp;
|
||||
use vars qw($VERSION @ISA @EXPORT $AUTOLOAD);
|
||||
|
||||
require 5.002;
|
||||
require Exporter;
|
||||
require DynaLoader;
|
||||
require AutoLoader;
|
||||
|
||||
@ISA = qw(Exporter DynaLoader);
|
||||
# Items to export into callers namespace by default. Note: do not export
|
||||
# names by default without a very good reason. Use EXPORT_OK instead.
|
||||
# Do not simply export all your public functions/methods/constants.
|
||||
@EXPORT =
|
||||
qw(
|
||||
Success Transparent Opaque QuantumDepth QuantumRange MaxRGB
|
||||
WarningException ResourceLimitWarning TypeWarning OptionWarning
|
||||
DelegateWarning MissingDelegateWarning CorruptImageWarning
|
||||
FileOpenWarning BlobWarning StreamWarning CacheWarning CoderWarning
|
||||
ModuleWarning DrawWarning ImageWarning XServerWarning RegistryWarning
|
||||
ConfigureWarning ErrorException ResourceLimitError TypeError
|
||||
OptionError DelegateError MissingDelegateError CorruptImageError
|
||||
FileOpenError BlobError StreamError CacheError CoderError
|
||||
ModuleError DrawError ImageError XServerError RegistryError
|
||||
ConfigureError FatalErrorException
|
||||
);
|
||||
|
||||
$VERSION = '@PACKAGE_PERL_VERSION@';
|
||||
|
||||
sub AUTOLOAD {
|
||||
# This AUTOLOAD is used to 'autoload' constants from the constant()
|
||||
# XS function. If a constant is not found then control is passed
|
||||
# to the AUTOLOAD in AutoLoader.
|
||||
|
||||
my $constname;
|
||||
($constname = $AUTOLOAD) =~ s/.*:://;
|
||||
die "&${AUTOLOAD} not defined. The required ImageMagick libraries are not installed or not installed properly.\n" if $constname eq 'constant';
|
||||
my $val = constant($constname, @_ ? $_[0] : 0);
|
||||
if ($! != 0) {
|
||||
if ($! =~ /Invalid/) {
|
||||
$AutoLoader::AUTOLOAD = $AUTOLOAD;
|
||||
goto &AutoLoader::AUTOLOAD;
|
||||
}
|
||||
else {
|
||||
my($pack,$file,$line) = caller;
|
||||
die "Your vendor has not defined PerlMagick macro $pack\:\:$constname, used at $file line $line.\n";
|
||||
}
|
||||
}
|
||||
eval "sub $AUTOLOAD { $val }";
|
||||
goto &$AUTOLOAD;
|
||||
}
|
||||
|
||||
bootstrap Image::Magick::@MAGICK_ABI_SUFFIX@ $VERSION;
|
||||
|
||||
# Preloaded methods go here.
|
||||
|
||||
sub new
|
||||
{
|
||||
my $this = shift;
|
||||
my $class = ref($this) || $this || "Image::Magick::@MAGICK_ABI_SUFFIX@";
|
||||
my $self = [ ];
|
||||
bless $self, $class;
|
||||
$self->set(@_) if @_;
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub New
|
||||
{
|
||||
my $this = shift;
|
||||
my $class = ref($this) || $this || "Image::Magick::@MAGICK_ABI_SUFFIX@";
|
||||
my $self = [ ];
|
||||
bless $self, $class;
|
||||
$self->set(@_) if @_;
|
||||
return $self;
|
||||
}
|
||||
|
||||
# Autoload methods go after =cut, and are processed by the autosplit program.
|
||||
|
||||
END { UNLOAD () };
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Image::Magick::@MAGICK_ABI_SUFFIX@ - objected-oriented Perl interface to ImageMagick (@MAGICK_ABI_SUFFIX@). Use it to read, manipulate, or write an image or image sequence from within a Perl script.
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
use Image::Magick::@MAGICK_ABI_SUFFIX@;
|
||||
$p = new Image::Magick::@MAGICK_ABI_SUFFIX@;
|
||||
$p->Read("imagefile");
|
||||
$p->Set(attribute => value, ...)
|
||||
($a, ...) = $p->Get("attribute", ...)
|
||||
$p->routine(parameter => value, ...)
|
||||
$p->Mogrify("Routine", parameter => value, ...)
|
||||
$p->Write("filename");
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
This Perl extension allows the reading, manipulation and writing of
|
||||
a large number of image file formats using the ImageMagick library.
|
||||
It was originally developed to be used by CGI scripts for Web pages.
|
||||
|
||||
A web page has been set up for this extension. See:
|
||||
|
||||
file://@DOCUMENTATION_PATH@/www/perl-magick.html
|
||||
http://www.imagemagick.org/script/perl-magick.php
|
||||
|
||||
If you have problems, go to
|
||||
|
||||
http://www.imagemagick.org/discourse-server/viewforum.php?f=7
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Kyle Shorter magick-users@imagemagick.org
|
||||
|
||||
=head1 BUGS
|
||||
|
||||
Has all the bugs of ImageMagick and much, much more!
|
||||
|
||||
=head1 SEE ALSO
|
||||
|
||||
perl(1).
|
||||
|
||||
=cut
|
14061
ImageMagick/PerlMagick/quantum/quantum.xs.in
Normal file
1
ImageMagick/PerlMagick/quantum/typemap.in
Normal file
|
@ -0,0 +1 @@
|
|||
Image::Magick::@MAGICK_ABI_SUFFIX@ T_PTROBJ
|
4
ImageMagick/PerlMagick/t/MasterImage_70x46.ppm
Normal file
39
ImageMagick/PerlMagick/t/blob.t
Normal file
|
@ -0,0 +1,39 @@
|
|||
#!/usr/bin/perl
|
||||
# Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
|
||||
# dedicated to making software imaging solutions freely available.
|
||||
#
|
||||
# You may not use this file except in compliance with the License. You may
|
||||
# obtain a copy of the License at
|
||||
#
|
||||
# http://www.imagemagick.org/script/license.php
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Test image blobs.
|
||||
#
|
||||
BEGIN { $| = 1; $test=1, print "1..1\n"; }
|
||||
END {print "not ok 1\n" unless $loaded;}
|
||||
use Image::Magick;
|
||||
$loaded=1;
|
||||
|
||||
chdir 't' || die 'Cd failed';
|
||||
|
||||
$image = new Image::Magick;
|
||||
$image->Read( 'input.miff' );
|
||||
@blob = $image->ImageToBlob();
|
||||
undef $image;
|
||||
|
||||
$image=Image::Magick->new( magick=>'MIFF' );
|
||||
$image->BlobToImage( @blob );
|
||||
|
||||
if ($image->Get('signature') ne
|
||||
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7')
|
||||
{ print "not ok $test\n"; }
|
||||
else
|
||||
{ print "ok $test\n"; }
|
||||
|
||||
1;
|
9
ImageMagick/PerlMagick/t/bzlib/input.miff
Normal file
BIN
ImageMagick/PerlMagick/t/bzlib/input.miff.bz2
Normal file
30
ImageMagick/PerlMagick/t/bzlib/read.t
Normal file
|
@ -0,0 +1,30 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Test reading an image which uses BZip compression
|
||||
#
|
||||
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
|
||||
#
|
||||
|
||||
BEGIN { $| = 1; $test=1; print "1..2\n"; }
|
||||
END {print "not ok $test\n" unless $loaded;}
|
||||
use Image::Magick;
|
||||
$loaded=1;
|
||||
|
||||
require 't/subroutines.pl';
|
||||
|
||||
chdir 't/bzlib' || die 'Cd failed';
|
||||
|
||||
#
|
||||
# Test reading BZip compressed MIFF
|
||||
#
|
||||
testRead( 'input.miff',
|
||||
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7' );
|
||||
|
||||
#
|
||||
# 2) Test reading BZip stream-compressed MIFF (.bz2 extension)
|
||||
#
|
||||
print("Reading BZip stream-compressed MIFF (.bz2 extension) ...\n");
|
||||
++$test;
|
||||
testRead( 'input.miff.bz2',
|
||||
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7' );
|
||||
|
27
ImageMagick/PerlMagick/t/bzlib/write.t
Normal file
|
@ -0,0 +1,27 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Test writing files using bzlib-based compression
|
||||
#
|
||||
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
|
||||
#
|
||||
BEGIN { $| = 1; $test=1; print "1..1\n"; }
|
||||
END {print "not ok $test\n" unless $loaded;}
|
||||
|
||||
use Image::Magick;
|
||||
$loaded=1;
|
||||
|
||||
require 't/subroutines.pl';
|
||||
|
||||
chdir 't/bzlib' || die 'Cd failed';
|
||||
|
||||
#
|
||||
# Test writing BZip-compressed MIFF
|
||||
#
|
||||
|
||||
testReadWrite( 'input.miff',
|
||||
'output.miff',
|
||||
q/compression=>'BZip'/,
|
||||
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7' );
|
||||
|
||||
$test = 0; # Quench PERL compliaint
|
||||
|
1
ImageMagick/PerlMagick/t/cgm/input.cgm
Normal file
20
ImageMagick/PerlMagick/t/cgm/read.t
Normal file
|
@ -0,0 +1,20 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Test reading CGM files
|
||||
#
|
||||
# Written by Bob Friesenhahn
|
||||
#
|
||||
# Whenever a new test is added/removed, be sure to update the
|
||||
# 1..n ouput.
|
||||
#
|
||||
BEGIN { $| = 1; $test=1; print "1..1\n"; }
|
||||
END {print "not ok $test\n" unless $loaded;}
|
||||
use Image::Magick;
|
||||
$loaded=1;
|
||||
|
||||
require 't/subroutines.pl';
|
||||
|
||||
chdir 't/cgm' || die 'Cd failed';
|
||||
|
||||
testReadCompare('CGM:input.cgm', '../reference/cgm/read.miff', q//, 0.0 0.0);
|
||||
|
167
ImageMagick/PerlMagick/t/composite.t
Normal file
|
@ -0,0 +1,167 @@
|
|||
#!/usr/bin/perl
|
||||
# Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
|
||||
# dedicated to making software imaging solutions freely available.
|
||||
#
|
||||
# You may not use this file except in compliance with the License. You may
|
||||
# obtain a copy of the License at
|
||||
#
|
||||
# http://www.imagemagick.org/script/license.php
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
BEGIN { $| = 1; $test=1; print "1..18\n"; }
|
||||
END {print "not ok $test\n" unless $loaded;}
|
||||
use Image::Magick;
|
||||
$loaded=1;
|
||||
|
||||
require 't/subroutines.pl';
|
||||
|
||||
chdir 't' || die 'Cd failed';
|
||||
|
||||
#
|
||||
# Add
|
||||
#
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'Add'/,
|
||||
'reference/composite/Add.miff', 0.2, 1.03);
|
||||
#
|
||||
# Atop
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'Atop'/,
|
||||
'reference/composite/Atop.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# Bumpmap
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//,q/, gravity=>'Center', compose=>'Bumpmap'/,
|
||||
'reference/composite/Bumpmap.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# Clear
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'Clear'/,
|
||||
'reference/composite/Clear.miff', 0.3, 1.03);
|
||||
|
||||
#
|
||||
# Copy
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'Copy'/,
|
||||
'reference/composite/Copy.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# CopyBlue
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'CopyBlue'/,
|
||||
'reference/composite/CopyBlue.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# CopyGreen
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'CopyGreen'/,
|
||||
'reference/composite/CopyGreen.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# CopyRed
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'CopyRed'/,
|
||||
'reference/composite/CopyRed.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# CopyOpacity
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'CopyOpacity'/,
|
||||
'reference/composite/CopyOpacity.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# Difference
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'Difference'/,
|
||||
'reference/composite/Difference.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# In
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'In'/,
|
||||
'reference/composite/In.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# Minus
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'Minus'/,
|
||||
'reference/composite/Minus.miff', 0.3, 1.03);
|
||||
|
||||
#
|
||||
# Multiply
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'Multiply'/,
|
||||
'reference/composite/Multiply.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# Out
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'Out'/,
|
||||
'reference/composite/Out.miff', 0.3, 1.03);
|
||||
|
||||
#
|
||||
# Over
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'Over'/,
|
||||
'reference/composite/Over.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# Plus
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'Plus'/,
|
||||
'reference/composite/Plus.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# Subtract
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'Subtract'/,
|
||||
'reference/composite/Subtract.miff', 0.1, 1.03);
|
||||
|
||||
#
|
||||
# Xor
|
||||
#
|
||||
++$test;
|
||||
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
|
||||
'input.miff', q//, q/, gravity=>'Center', compose=>'Xor'/,
|
||||
'reference/composite/Xor.miff', 0.3, 1.03);
|
||||
|
||||
1;
|
207
ImageMagick/PerlMagick/t/filter.t
Normal file
|
@ -0,0 +1,207 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
|
||||
# dedicated to making software imaging solutions freely available.
|
||||
#
|
||||
# You may not use this file except in compliance with the License. You may
|
||||
# obtain a copy of the License at
|
||||
#
|
||||
# http://www.imagemagick.org/script/license.php
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Test image filters.
|
||||
#
|
||||
BEGIN { $| = 1; $test=1, print "1..58\n"; }
|
||||
END {print "not ok 1\n" unless $loaded;}
|
||||
use Image::Magick;
|
||||
$loaded=1;
|
||||
|
||||
require 't/subroutines.pl';
|
||||
|
||||
chdir 't' || die 'Cd failed';
|
||||
use FileHandle;
|
||||
autoflush STDOUT 1;
|
||||
autoflush STDERR 1;
|
||||
|
||||
$fuzz=int(0.05*(Image::Magick->new()->QuantumRange));
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/AdaptiveThreshold.miff', 'AdaptiveThreshold', q/'5x5+5%'/, 0.30, 1.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Annotate.miff', 'Annotate', q/text=>'Magick',geometry=>'+0+20',font=>'Generic.ttf',fill=>'gold',gravity=>'North',pointsize=>14/, 0.02, 1.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Blur.miff', 'Blur', q/'0.0x1.0'/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Border.miff', 'Border', q/geometry=>'6x6',color=>'gold'/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Channel.miff', 'Channel', q/channel=>'red'/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Chop.miff', 'Chop', q/geometry=>'80x80+5+10'/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Charcoal.miff', 'Charcoal', q/'0x1'/, 0.2, 1.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', "fuzz=>$fuzz", 'reference/filter/ColorFloodfill.miff', 'ColorFloodfill', q/geometry=>"+25+45"/, 0.03, 1.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', "fuzz=>$fuzz", 'reference/filter/Colorize.miff', 'Colorize', q/fill=>"red", opacity=>"50%"/, 0.02, 0.5 );
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Contrast.miff', 'Contrast', q//, 0.06, 0.6);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Convolve.miff', 'Convolve', q/[1, 1, 1, 1, 4, 1, 1, 1, 1]/, 0.09, 0.9);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Crop.miff', 'Crop', q/geometry=>'80x80+5+10'/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Set.miff', 'Set', q/page=>'0x0+0+0'/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Despeckle.miff', 'Despeckle', q//, 0.08, 1.08);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Draw.miff', 'Draw', q/fill=>'none',stroke=>'gold',primitive=>'circle',points=>'60,90 60,120',strokewidth=>2/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Edge.miff', 'Edge', q//, 0.3, 1.03);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Emboss.miff', 'Emboss', q/'0x1'/, 0.2, 1.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Equalize.miff', 'Equalize', q//, 0.2, 1.03);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Implode.miff', 'Implode', q/0.5/, 0.002, 0.2);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Flip.miff', 'Flip', q//, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Flop.miff', 'Flop', q//, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Frame.miff', 'Frame', q/'15x15+3+3'/, 0.4, 1.04);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Gamma.miff', 'Gamma', q/1.6/, 0.02, 0.2);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/GaussianBlur.miff', 'GaussianBlur', q/'0.0x1.5'/, 0.004, 0.4);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Implode.miff', 'Implode', q/0.5/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Level.miff', 'Level', q/'20%x'/, 0.2, 1.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Magnify.miff', 'Magnify', q//, 0.05, 0.5);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', "fuzz=>$fuzz", 'reference/filter/MatteFloodfill.miff', 'MatteFloodfill', q/geometry=>"+25+45"/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/MedianFilter.miff', 'MedianFilter', q//, 0.5, 0.9);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Minify.miff', 'Minify', q//, 0.05, 0.5);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Modulate.miff', 'Modulate', q/brightness=>110,saturation=>110,hue=>110/, 0.08, 1.08);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/QuantizeMono.miff', 'Quantize', q/colorspace=>'gray',colors=>2,dither=>'false'/, 0.9, 1.03);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/MotionBlur.miff', 'MotionBlur', q/'0x13+10-10'/, 0.003, 0.03);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Negate.miff', 'Negate', q//, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Normalize.miff', 'Normalize', q//, 0.04, 1.04);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/OilPaint.miff', 'OilPaint', q//, 0.03, 1.03);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', "fuzz=>$fuzz", 'reference/filter/Opaque.miff', 'Opaque', q/color=>"#e23834", fill=>"green"/, 0.03, 1.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Quantize.miff', 'Quantize', q//, 0.2, 1.03);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/RadialBlur.miff', 'RadialBlur', q/10/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Raise.miff', 'Raise', q/'10x10'/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/ReduceNoise.miff', 'ReduceNoise', q//, 0.5, 0.9);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Resize.miff', 'Resize', q/'60%'/, 0.02, 1.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Roll.miff', 'Roll', q/geometry=>'+20+10'/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Rotate.miff', 'Rotate', q/45/, 0.4, 1.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Sample.miff', 'Sample', q/'60%'/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Scale.miff', 'Scale', q/'60%'/, 0.008, 1.0);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Segment.miff', 'Segment', q//, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Shade.miff', 'Shade', q/geometry=>'30x30',gray=>'true'/, 0.08, 0.3);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Sharpen.miff', 'Sharpen', q/'0.0x1.0'/, 0.05, 1.05);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Shave.miff', 'Shave', q/'10x10'/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Shear.miff', 'Shear', q/'-20x20'/, 0.4, 1.04);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/SigmoidalContrast.miff', 'SigmoidalContrast', q/"3x50%"/, 0.06, 0.6);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Solarize.miff', 'Solarize', q//, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Swirl.miff', 'Swirl', q/90/, 0.002, 0.2);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Threshold.miff', 'Threshold', q/90%/, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Trim.miff', 'Trim', q//, 0.002, 0.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/UnsharpMask.miff', 'UnsharpMask', q/'0.0x1.0'/, 0.02, 1.02);
|
||||
++$test;
|
||||
|
||||
testFilterCompare('input.miff', q//, 'reference/filter/Wave.miff', 'Wave', q/'25x150'/, 0.6, 1.06);
|
||||
++$test;
|
||||
|
||||
1;
|
BIN
ImageMagick/PerlMagick/t/fpx/input_256.fpx
Normal file
BIN
ImageMagick/PerlMagick/t/fpx/input_bw.fpx
Normal file
BIN
ImageMagick/PerlMagick/t/fpx/input_grayscale.fpx
Normal file
BIN
ImageMagick/PerlMagick/t/fpx/input_jpeg.fpx
Normal file
BIN
ImageMagick/PerlMagick/t/fpx/input_truecolor.fpx
Normal file
55
ImageMagick/PerlMagick/t/fpx/read.t
Normal file
|
@ -0,0 +1,55 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Test reading FPX images
|
||||
#
|
||||
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
|
||||
#
|
||||
|
||||
BEGIN { $| = 1; $test=1; print "1..5\n"; }
|
||||
END {print "not ok $test\n" unless $loaded;}
|
||||
use Image::Magick;
|
||||
$loaded=1;
|
||||
|
||||
require 't/subroutines.pl';
|
||||
|
||||
chdir 't/fpx' || die 'Cd failed';
|
||||
|
||||
#
|
||||
# 1) Test Black-and-white, bit_depth=1 FPX
|
||||
#
|
||||
print( "1-bit grayscale FPX ...\n" );
|
||||
testRead( 'input_bw.fpx',
|
||||
'164b30b0e46fab4b60ea891a0f13c1ec2e3c9558e647c75021f7bd2935fe1e46' );
|
||||
|
||||
#
|
||||
# 2) Test grayscale FPX
|
||||
#
|
||||
++$test;
|
||||
print( "8-bit grayscale FPX ...\n" );
|
||||
testRead( 'input_grayscale.fpx',
|
||||
'74416d622acf60c213b8dd0a4ba9ab4a46581daa8b7b4a084658fb5ae2ad1e4b' );
|
||||
|
||||
#
|
||||
# 3) Test 256 color pseudocolor FPX
|
||||
#
|
||||
++$test;
|
||||
print( "8-bit indexed-color FPX ...\n" );
|
||||
testRead( 'input_256.fpx',
|
||||
'772ef079906aa47951a09cd4ce6d62b740a391935710e7076a6716423a92db4f' );
|
||||
|
||||
#
|
||||
# 4) Test TrueColor FPX
|
||||
#
|
||||
++$test;
|
||||
print( "24-bit Truecolor FPX ...\n" );
|
||||
testRead( 'input_truecolor.fpx',
|
||||
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7' );
|
||||
|
||||
#
|
||||
# 5) Test JPEG FPX
|
||||
#
|
||||
++$test;
|
||||
print( "24-bit JPEG FPX ...\n" );
|
||||
testRead( 'input_jpeg.fpx',
|
||||
'8c02bf8e953893cbd65b8a0a1fb574de50ac4cdeb2a88dbf702c8b65d82aa41b' );
|
||||
|
49
ImageMagick/PerlMagick/t/fpx/write.t
Normal file
|
@ -0,0 +1,49 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Test writing FPX images
|
||||
#
|
||||
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
|
||||
#
|
||||
BEGIN { $| = 1; $test=1; print "1..4\n"; }
|
||||
END {print "not ok $test\n" unless $loaded;}
|
||||
|
||||
use Image::Magick;
|
||||
$loaded=1;
|
||||
|
||||
require 't/subroutines.pl';
|
||||
|
||||
chdir 't/fpx' || die 'Cd failed';
|
||||
|
||||
#
|
||||
# 1) Test Black-and-white, bit_depth=1 FPX
|
||||
#
|
||||
print( "1-bit grayscale FPX ...\n" );
|
||||
testReadWrite( 'input_bw.fpx', 'output_bw.fpx', q/quality=>95/,
|
||||
'164b30b0e46fab4b60ea891a0f13c1ec2e3c9558e647c75021f7bd2935fe1e46');
|
||||
|
||||
#
|
||||
# 2) Test grayscale image
|
||||
#
|
||||
++$test;
|
||||
print( "8-bit grayscale FPX ...\n" );
|
||||
testReadWrite( 'input_grayscale.fpx',
|
||||
'output_grayscale.fpx', '',
|
||||
'74416d622acf60c213b8dd0a4ba9ab4a46581daa8b7b4a084658fb5ae2ad1e4b');
|
||||
#
|
||||
# 3) Test pseudocolor image
|
||||
#
|
||||
++$test;
|
||||
print( "8-bit indexed-color FPX ...\n" );
|
||||
testReadWrite( 'input_256.fpx',
|
||||
'output_256.fpx',
|
||||
q/quality=>54/,
|
||||
'772ef079906aa47951a09cd4ce6d62b740a391935710e7076a6716423a92db4f' );
|
||||
#
|
||||
# 4) Test truecolor image
|
||||
#
|
||||
++$test;
|
||||
print( "24-bit Truecolor FPX ...\n" );
|
||||
testReadWrite( 'input_truecolor.fpx',
|
||||
'output_truecolor.fpx',
|
||||
q/quality=>55/,
|
||||
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7' );
|
103
ImageMagick/PerlMagick/t/getattribute.t
Normal file
|
@ -0,0 +1,103 @@
|
|||
#!/usr/bin/perl
|
||||
# Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
|
||||
# dedicated to making software imaging solutions freely available.
|
||||
#
|
||||
# You may not use this file except in compliance with the License. You may
|
||||
# obtain a copy of the License at
|
||||
#
|
||||
# http://www.imagemagick.org/script/license.php
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
# Test getting attributes.
|
||||
#
|
||||
BEGIN { $| = 1; $test=1, print "1..25\n"; }
|
||||
END {print "not ok 1\n" unless $loaded;}
|
||||
use Image::Magick;
|
||||
$loaded=1;
|
||||
|
||||
require 't/subroutines.pl';
|
||||
|
||||
chdir 't' || die 'Cd failed';
|
||||
|
||||
testGetAttribute('input.miff','base-columns','70');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','base-filename','input.miff');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','base-rows','46');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','class','DirectClass');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','colors','3019');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','columns','70');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','directory',undef);
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','gamma','0.454545');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','geometry',undef);
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','height','46');
|
||||
|
||||
++$test;
|
||||
# Returns undef
|
||||
testGetAttribute('input.miff','label',undef);
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','matte','0');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','error','0');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','montage',undef);
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','maximum-error','0');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','mean-error','0');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','rows','46');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','signature',
|
||||
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','texture',undef);
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','type','TrueColor');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','units','undefined units');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','view',undef);
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','width','70');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','x-resolution','72');
|
||||
|
||||
++$test;
|
||||
testGetAttribute('input.miff','y-resolution','72');
|
||||
|
||||
1;
|
BIN
ImageMagick/PerlMagick/t/hdf/input_256.hdf
Normal file
BIN
ImageMagick/PerlMagick/t/hdf/input_truecolor.hdf
Normal file
28
ImageMagick/PerlMagick/t/hdf/read.t
Normal file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Test reading HDF images
|
||||
#
|
||||
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
|
||||
#
|
||||
|
||||
BEGIN { $| = 1; $test=1; print "1..2\n"; }
|
||||
END {print "not ok $test\n" unless $loaded;}
|
||||
use Image::Magick;
|
||||
$loaded=1;
|
||||
|
||||
require 't/subroutines.pl';
|
||||
|
||||
chdir 't/hdf' || die 'Cd failed';
|
||||
|
||||
#
|
||||
# 1) Test 256 color pseudocolor HDF
|
||||
#
|
||||
testRead( 'input_256.hdf',
|
||||
'975cdb03f0fa923936f1cecf7b8a49a917493393a0eb098828ab710295195584' );
|
||||
|
||||
#
|
||||
# 2) Test TrueColor HDF
|
||||
#
|
||||
++$test;
|
||||
testRead( 'input_truecolor.hdf',
|
||||
'975cdb03f0fa923936f1cecf7b8a49a917493393a0eb098828ab710295195584' );
|
32
ImageMagick/PerlMagick/t/hdf/write.t
Normal file
|
@ -0,0 +1,32 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Test writing HDF images
|
||||
#
|
||||
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
|
||||
#
|
||||
BEGIN { $| = 1; $test=1; print "1..2\n"; }
|
||||
END {print "not ok $test\n" unless $loaded;}
|
||||
|
||||
use Image::Magick;
|
||||
$loaded=1;
|
||||
|
||||
require 't/subroutines.pl';
|
||||
|
||||
chdir 't/hdf' || die 'Cd failed';
|
||||
|
||||
#
|
||||
# 1) Test pseudocolor image
|
||||
#
|
||||
testReadWrite( 'input_256.hdf',
|
||||
'output_256.hdf',
|
||||
q/quality=>54/,
|
||||
'975cdb03f0fa923936f1cecf7b8a49a917493393a0eb098828ab710295195584' );
|
||||
|
||||
#
|
||||
# 2) Test truecolor image
|
||||
#
|
||||
++$test;
|
||||
testReadWrite( 'input_truecolor.hdf',
|
||||
'output_truecolor.hdf',
|
||||
q/quality=>55/,
|
||||
'975cdb03f0fa923936f1cecf7b8a49a917493393a0eb098828ab710295195584' );
|
1
ImageMagick/PerlMagick/t/hpgl/input.hpgl
Normal file
29
ImageMagick/PerlMagick/t/hpgl/read.t
Normal file
|
@ -0,0 +1,29 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# Test Reading HP GL images
|
||||
#
|
||||
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
|
||||
#
|
||||
|
||||
BEGIN { $| = 1; $test=1; print "1..1\n"; }
|
||||
END {print "not ok $test\n" unless $loaded;}
|
||||
use Image::Magick;
|
||||
$loaded=1;
|
||||
|
||||
require 't/subroutines.pl';
|
||||
|
||||
chdir 't/hpgl' || die 'Cd failed';
|
||||
|
||||
#
|
||||
# 1) Test reading HP GL
|
||||
#
|
||||
$image=Image::Magick->new;
|
||||
$x=$image->ReadImage('input.hpgl');
|
||||
if( "$x" ) {
|
||||
print "ReadImage: $x\n";
|
||||
print "not ok $test\n";
|
||||
} else {
|
||||
print "ok $test\n";
|
||||
}
|
||||
|
||||
undef $image;
|
BIN
ImageMagick/PerlMagick/t/input.avs
Normal file
BIN
ImageMagick/PerlMagick/t/input.bie
Normal file
After Width: | Height: | Size: 280 B |
BIN
ImageMagick/PerlMagick/t/input.bmp
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
ImageMagick/PerlMagick/t/input.bmp24
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
ImageMagick/PerlMagick/t/input.dcx
Normal file
BIN
ImageMagick/PerlMagick/t/input.dib
Normal file
BIN
ImageMagick/PerlMagick/t/input.fits
Normal file
BIN
ImageMagick/PerlMagick/t/input.gif
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
ImageMagick/PerlMagick/t/input.gif87
Normal file
After Width: | Height: | Size: 4 KiB |
BIN
ImageMagick/PerlMagick/t/input.ico
Normal file
After Width: | Height: | Size: 766 B |
BIN
ImageMagick/PerlMagick/t/input.im1
Normal file
BIN
ImageMagick/PerlMagick/t/input.im24
Normal file
BIN
ImageMagick/PerlMagick/t/input.im8
Normal file
BIN
ImageMagick/PerlMagick/t/input.mat
Normal file
14
ImageMagick/PerlMagick/t/input.miff
Normal file
2
ImageMagick/PerlMagick/t/input.mtv
Normal file
BIN
ImageMagick/PerlMagick/t/input.p7
Normal file
BIN
ImageMagick/PerlMagick/t/input.pcx
Normal file
BIN
ImageMagick/PerlMagick/t/input.pict
Normal file
BIN
ImageMagick/PerlMagick/t/input.psd
Normal file
BIN
ImageMagick/PerlMagick/t/input.rle
Normal file
BIN
ImageMagick/PerlMagick/t/input.sgi
Normal file
BIN
ImageMagick/PerlMagick/t/input.tga
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
ImageMagick/PerlMagick/t/input.tim
Normal file
BIN
ImageMagick/PerlMagick/t/input.viff
Normal file
BIN
ImageMagick/PerlMagick/t/input.wbmp
Normal file
BIN
ImageMagick/PerlMagick/t/input.wpg
Normal file
38
ImageMagick/PerlMagick/t/input.xbm
Normal file
|
@ -0,0 +1,38 @@
|
|||
#define input_width 70
|
||||
#define input_height 46
|
||||
static char input_bits[] = {
|
||||
0xfe, 0xfe, 0xee, 0xae, 0xea, 0xaa, 0xfe, 0xae, 0x2a, 0xff, 0xff, 0xff,
|
||||
0xff, 0xfd, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xbb, 0xaa, 0xaa,
|
||||
0xfe, 0xbf, 0x3e, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x37,
|
||||
0xff, 0xff, 0xef, 0xee, 0xee, 0xae, 0xee, 0xbf, 0x2a, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0x5f, 0xfc, 0x7f, 0x34, 0xff, 0xff, 0xff, 0xbf, 0xaa, 0xab,
|
||||
0xea, 0xbf, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xf5, 0x7f, 0x35,
|
||||
0xee, 0xee, 0xee, 0xaa, 0xea, 0xaa, 0xaa, 0xae, 0x2a, 0xff, 0xff, 0xff,
|
||||
0xff, 0xdf, 0xdd, 0xdd, 0x5d, 0x30, 0xbf, 0xfb, 0xfb, 0xab, 0xaa, 0xaa,
|
||||
0xaa, 0x2a, 0x28, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x0f, 0x00,
|
||||
0xee, 0xea, 0xee, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0x08, 0xff, 0xc5, 0xdf,
|
||||
0xdf, 0xdf, 0xff, 0xdd, 0x1d, 0x00, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0x2a, 0x00, 0xff, 0x11, 0xfd, 0xff, 0xff, 0xff, 0x5f, 0x15, 0x00,
|
||||
0xee, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0x00, 0xff, 0xdd, 0xfd,
|
||||
0xff, 0xfd, 0xff, 0x5f, 0x14, 0x04, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0x2a, 0xff, 0xdf, 0xf7, 0xff, 0xf7, 0xfd, 0x7f, 0x7d, 0x15,
|
||||
0xee, 0xae, 0xaa, 0xaa, 0xea, 0xaa, 0xaa, 0xaa, 0x2a, 0xff, 0xdf, 0xdd,
|
||||
0xdf, 0xff, 0xdd, 0x5d, 0xdd, 0x05, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaa, 0x2a, 0x7f, 0x07, 0x7d, 0x7f, 0x7d, 0xff, 0x7f, 0x5f, 0x35,
|
||||
0xae, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xae, 0x2a, 0xdf, 0xc5, 0xc7,
|
||||
0xfd, 0xfd, 0xfd, 0xdd, 0xdf, 0x1d, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xaf, 0x2a, 0x7f, 0xd5, 0xf7, 0xff, 0xff, 0xff, 0xff, 0x67, 0x37,
|
||||
0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0x2a, 0xff, 0xfd, 0xdf,
|
||||
0xff, 0xdd, 0xdd, 0xdf, 0xfd, 0x1d, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
|
||||
0xaa, 0xba, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x35,
|
||||
0xaa, 0xea, 0xaa, 0xae, 0xea, 0xea, 0xaa, 0xae, 0x2a, 0xff, 0xfd, 0xfd,
|
||||
0xdd, 0xff, 0xfd, 0xff, 0xfd, 0x1d, 0xaa, 0xea, 0xaa, 0xaa, 0xba, 0xba,
|
||||
0xab, 0xba, 0x2a, 0xff, 0xff, 0xf7, 0xf7, 0xff, 0xff, 0xff, 0x7f, 0x35,
|
||||
0xaa, 0xaa, 0xae, 0xaa, 0xee, 0xee, 0xea, 0xee, 0x2a, 0xff, 0x0f, 0xff,
|
||||
0xdd, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xaa, 0x0a, 0x3a, 0xaa, 0xaa, 0xbb,
|
||||
0xfb, 0xbf, 0x2a, 0xff, 0x07, 0x1c, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x3f,
|
||||
0xaa, 0x8a, 0x08, 0xa8, 0xee, 0xee, 0xfe, 0xee, 0x2a, 0xfd, 0x01, 0x04,
|
||||
0xe0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xaa, 0x02, 0x02, 0xa0, 0xba, 0xba,
|
||||
0xfe, 0xff, 0x2b, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x3f,
|
||||
0xaa, 0x82, 0x00, 0x00, 0xe8, 0xee, 0xee, 0xee, 0x2f, 0xdf, 0x01, 0x00,
|
||||
0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, };
|
308
ImageMagick/PerlMagick/t/input.xpm
Normal file
|
@ -0,0 +1,308 @@
|
|||
/* XPM */
|
||||
static char *magick[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"70 46 256 2",
|
||||
" c #2b2f1e",
|
||||
". c #2d2b2b",
|
||||
"X c #2a2927",
|
||||
"o c #2d2e31",
|
||||
"O c #2d322c",
|
||||
"+ c #2d362a",
|
||||
"@ c #2e3430",
|
||||
"# c #332d2b",
|
||||
"$ c #372c2a",
|
||||
"% c #312a30",
|
||||
"& c #33332d",
|
||||
"* c #333c2c",
|
||||
"= c #3a332d",
|
||||
"- c #3a3929",
|
||||
"; c #363b33",
|
||||
": c #3b3532",
|
||||
"> c #3b3b33",
|
||||
", c #363733",
|
||||
"< c #38354c",
|
||||
"1 c #38422b",
|
||||
"2 c #394435",
|
||||
"3 c #3c464c",
|
||||
"4 c #592b1f",
|
||||
"5 c #44392d",
|
||||
"6 c #453b33",
|
||||
"7 c #553b2e",
|
||||
"8 c #583b36",
|
||||
"9 c #4c2c29",
|
||||
"0 c #69362c",
|
||||
"q c #6a3a33",
|
||||
"w c #7c3a2d",
|
||||
"e c #75372c",
|
||||
"r c #793b32",
|
||||
"t c #602e24",
|
||||
"y c #433f4e",
|
||||
"u c #493e75",
|
||||
"i c #45472c",
|
||||
"p c #484637",
|
||||
"a c #485738",
|
||||
"s c #53442e",
|
||||
"d c #5c4d3c",
|
||||
"f c #574a38",
|
||||
"g c #58543b",
|
||||
"h c #43572d",
|
||||
"j c #4a6539",
|
||||
"k c #556a3c",
|
||||
"l c #654638",
|
||||
"z c #63553b",
|
||||
"x c #764337",
|
||||
"c c #79412d",
|
||||
"v c #607c3c",
|
||||
"b c #4d4b48",
|
||||
"n c #4b5844",
|
||||
"m c #594d45",
|
||||
"M c #5a5746",
|
||||
"N c #555155",
|
||||
"B c #5c5869",
|
||||
"V c #4e4d69",
|
||||
"C c #596847",
|
||||
"Z c #5a6853",
|
||||
"A c #597845",
|
||||
"S c #597350",
|
||||
"D c #655b48",
|
||||
"F c #685e55",
|
||||
"G c #77584a",
|
||||
"H c #73544d",
|
||||
"J c #6b5a6b",
|
||||
"K c #68654b",
|
||||
"L c #6a6354",
|
||||
"P c #696657",
|
||||
"I c #647b47",
|
||||
"U c #677857",
|
||||
"Y c #716655",
|
||||
"T c #757456",
|
||||
"R c #76634c",
|
||||
"E c #6a6667",
|
||||
"W c #7b7969",
|
||||
"Q c #6d6f73",
|
||||
"! c #58588f",
|
||||
"~ c #5c5ea3",
|
||||
"^ c #5d66af",
|
||||
"/ c #665c9e",
|
||||
"( c #727196",
|
||||
") c #7977a6",
|
||||
"_ c #6e73b2",
|
||||
"` c #7478cd",
|
||||
"' c #5d843e",
|
||||
"] c #5e8447",
|
||||
"[ c #65884a",
|
||||
"{ c #6b944b",
|
||||
"} c #6d9554",
|
||||
"| c #719b4d",
|
||||
" . c #739957",
|
||||
".. c #6e8759",
|
||||
"X. c #748967",
|
||||
"o. c #778575",
|
||||
"O. c #7b9b68",
|
||||
"+. c #779877",
|
||||
"@. c #6b8e68",
|
||||
"#. c #78a658",
|
||||
"$. c #7ca567",
|
||||
"%. c #7ea675",
|
||||
"&. c #7eb065",
|
||||
"*. c #7c8d84",
|
||||
"=. c #7f83b0",
|
||||
"-. c #7baf88",
|
||||
";. c #7d87cb",
|
||||
":. c #91341d",
|
||||
">. c #873b2b",
|
||||
",. c #853b34",
|
||||
"<. c #953c2b",
|
||||
"1. c #983d34",
|
||||
"2. c #a83a29",
|
||||
"3. c #aa3c31",
|
||||
"4. c #b83a2a",
|
||||
"5. c #b73b33",
|
||||
"6. c #b63d45",
|
||||
"7. c #884336",
|
||||
"8. c #9b402b",
|
||||
"9. c #984537",
|
||||
"0. c #8c402e",
|
||||
"q. c #a7412b",
|
||||
"w. c #a74435",
|
||||
"e. c #b94437",
|
||||
"r. c #864a44",
|
||||
"t. c #87574a",
|
||||
"y. c #994447",
|
||||
"u. c #95544c",
|
||||
"i. c #975855",
|
||||
"p. c #8a5956",
|
||||
"a. c #936b5a",
|
||||
"s. c #876652",
|
||||
"d. c #946c67",
|
||||
"f. c #a94845",
|
||||
"g. c #b3524c",
|
||||
"h. c #ba5d7b",
|
||||
"j. c #b16d59",
|
||||
"k. c #b0746d",
|
||||
"l. c #c43a2b",
|
||||
"z. c #cb3a2b",
|
||||
"x. c #c93727",
|
||||
"c. c #c73c33",
|
||||
"v. c #d7372a",
|
||||
"b. c #d83a35",
|
||||
"n. c #da2e27",
|
||||
"m. c #ff1b38",
|
||||
"M. c #e72d29",
|
||||
"N. c #ec2c37",
|
||||
"B. c #e5342b",
|
||||
"V. c #ec363a",
|
||||
"C. c #e73936",
|
||||
"Z. c #f7292b",
|
||||
"A. c #f92a37",
|
||||
"S. c #f3312d",
|
||||
"D. c #f63439",
|
||||
"F. c #da3d43",
|
||||
"G. c #c03e40",
|
||||
"H. c #e93d45",
|
||||
"J. c #fc2b48",
|
||||
"K. c #f83b43",
|
||||
"L. c #fa3b58",
|
||||
"P. c #f03654",
|
||||
"I. c #ff3b66",
|
||||
"U. c #fb3e71",
|
||||
"Y. c #c84239",
|
||||
"T. c #d6443c",
|
||||
"R. c #e4423b",
|
||||
"E. c #c64b47",
|
||||
"W. c #c94a57",
|
||||
"Q. c #d84644",
|
||||
"!. c #d54954",
|
||||
"~. c #d75348",
|
||||
"^. c #cc5754",
|
||||
"/. c #cc5969",
|
||||
"(. c #d6655b",
|
||||
"). c #d56f71",
|
||||
"_. c #e74546",
|
||||
"`. c #e95657",
|
||||
"'. c #f6454a",
|
||||
"]. c #f94956",
|
||||
"[. c #ec5055",
|
||||
"{. c #fb4667",
|
||||
"}. c #fe4877",
|
||||
"|. c #fb5668",
|
||||
" X c #fd5776",
|
||||
".X c #e75a64",
|
||||
"XX c #e8645c",
|
||||
"oX c #f8686b",
|
||||
"OX c #fa6774",
|
||||
"+X c #f9737a",
|
||||
"@X c #e96f6f",
|
||||
"#X c #847597",
|
||||
"$X c #8c7dae",
|
||||
"%X c #b37498",
|
||||
"&X c #837ec8",
|
||||
"*X c #fd7985",
|
||||
"=X c #e97b84",
|
||||
"-X c #c56995",
|
||||
";X c #82865e",
|
||||
":X c #879172",
|
||||
">X c #8aa877",
|
||||
",X c #97a57c",
|
||||
"<X c #89b06e",
|
||||
"1X c #a2917c",
|
||||
"2X c #a5b979",
|
||||
"3X c #f9827c",
|
||||
"4X c #989c95",
|
||||
"5X c #869188",
|
||||
"6X c #8785bc",
|
||||
"7X c #8483a9",
|
||||
"8X c #89a889",
|
||||
"9X c #93af92",
|
||||
"0X c #8fa5a3",
|
||||
"qX c #af84aa",
|
||||
"wX c #acad91",
|
||||
"eX c #b0b1b0",
|
||||
"rX c #8988c8",
|
||||
"tX c #8886d8",
|
||||
"yX c #969bdb",
|
||||
"uX c #9691cc",
|
||||
"iX c #8d8feb",
|
||||
"pX c #9ca2ea",
|
||||
"aX c #a09bd6",
|
||||
"sX c #a9a7d9",
|
||||
"dX c #a6abfa",
|
||||
"fX c #b4b9ff",
|
||||
"gX c #a8aff3",
|
||||
"hX c #9dc393",
|
||||
"jX c #aace93",
|
||||
"kX c #a8c9af",
|
||||
"lX c #bbc5c9",
|
||||
"zX c #c2879b",
|
||||
"xX c #cfae96",
|
||||
"cX c #c4bcb8",
|
||||
"vX c #c9b9a7",
|
||||
"bX c #ff858c",
|
||||
"nX c #ff9193",
|
||||
"mX c #e1aaa4",
|
||||
"MX c #d1ceb3",
|
||||
"NX c #ede9ac",
|
||||
"BX c #e8d4bc",
|
||||
"VX c #d8cac4",
|
||||
"CX c #d1d1ce",
|
||||
"ZX c #c1c4e7",
|
||||
"AX c #d2e5c6",
|
||||
"SX c #d9e2e8",
|
||||
"DX c #ebd9d0",
|
||||
"FX c #e9ebd9",
|
||||
"GX c #f1ead5",
|
||||
"HX c #e7e4e6",
|
||||
"JX c #f4e7e8",
|
||||
"KX c #fafae9",
|
||||
"LX c #fefefd",
|
||||
"PX c #fcfaf5",
|
||||
"IX c #f1f2f2",
|
||||
"UX c #e6d6f0",
|
||||
/* pixels */
|
||||
"# & & = = = $ $ = $ $ # # # # # # & & = - 6 s 6 p s x 8.5.E.Q.'.K.V.T.4.4.q.q.8.0.<.<.<.0.1.e.e.9.7 , % $ = # . O # $ 8 H d.$X/ V V Q 4XW N ",
|
||||
". O # # $ # # = & : $ # # # # # # & & = - 6 6 5 7 p l >.2.e.Q.H.K.K.T.q.q.4.8.8.>.<.<.<.<.1.5.c.9.5 , : & & & . @ % % 5 r i.$X^ u V B *.U N ",
|
||||
". . # # # # . . # # # # # # # # # # # & = 5 5 5 5 p f 0 >.9.e.Q.D.V.e.q.q.q.<.<.<.>.>.>.7.9.c.g.p.> : = & & O O @ @ # # 9 H 6X` u < < 3 n M ",
|
||||
"o o . . . . X X . . . . . # . # # # # # = = : 5 6 6 8 7 e <.w.e.Q.Q.q.8.1.1.<.>.>.>.>.,.7.9.e.j.:XZ 6 & O O . . # @ @ % # E uX;.( B Q *.*.Z ",
|
||||
"o o o . . . X X X . X X X . . . # . . . = : : = 5 5 6 6 0 ,.1.9.w.e.8.<.<.<.<.>.>.>.w r r.9.g.1X8XQ n 2 O . # # . . . % X K 4X0XkXkX9XhX8XZ ",
|
||||
"O O . & & # # . . . . . X X . . . . $ # = : = = $ = , % 9 0 7.0.<.9.1.<.>.0.>.>.e e w 7.r.u.:X9X9X+.U n : # X . % % % % X g >X>XhXhX%.8XX.M ",
|
||||
"O & & : , : # # % o % % # # # . % # $ 5 5 5 = $ : 9 9 9 $ 9 0 ,.,.r 7.7.0.>.>.e e e r 7.r.p.o.8X8X+.@.@.Z * X X X X . X X M O.O.%.%.%.+.@.n ",
|
||||
", , , > > 6 6 : : : = $ # & & , : 5 6 6 6 6 5 = 5 : 6 5 = 9 0 ,.r.7.,.c w w e e g.j.x H R T j.k.4X>X:X%.@.Z - X X X $ $ f P ..} .@.+.+.@.n ",
|
||||
"> > 2 < 6 6 p p 6 6 6 6 6 : = & : 6 6 s 6 6 6 > : 6 r.y.7.f.9.3.3.9.3.6.w.x w 6._.^.D C s.`.J.J.L.{..X@X)././.g.y.9 $ i z ......X.+.4X*.U n ",
|
||||
", : > 6 b 6 b p 6 6 6 6 6 5 : = - 6 7 s 7 6 5 > : x ].x.<.Y.3.5.e.2.5.c.D.R.T.C.n.Y.s.s.XXK._.'.J.J.J.L.U.U.}.}. X/.8 2 W 4X4X4XeXVXCXeXU Z ",
|
||||
"@ , , > p b p p p b 6 6 5 - > : > 6 p p i 5 6 ; 6 f.2.2.q.2.2.3.3.3.e.z.M.Z.S.B.n.l.E.~.'.H.4.Y._.K.L.L.I.U.}.{. X X/.d.VXUXUXJXPXPXIXCX5Xo.",
|
||||
"& . @ , > 6 p p N 7X) B y : $ & - 5 6 8 5 = & 9 ,.2.2.<.4.l.5.2.4.c.x.v.v.S.M.x.n.v.T.R.T.l.2.2.Q.'.'.].I.}.}.}. X{.=Xs.DXLXLXLXLXLXLXJXeXeX",
|
||||
": & # & > p f f B pXfXpXuX( b < > i p > 3 V n d 9.2.3.2.4.v.b.z.b.b.R.M.Z.Z.M.v.x.v.T.~.Y.4.4.Y.Q.Q._.{.{.{.}. X X|.OX!.mXLXLXLXPXLXPXDXGXHX",
|
||||
"p > - $ : 6 f f B yXfXfXfXgX&X/ V > > b ) qXh.W.4.2.4.l.b.C.v.C.C.v.R.S.Z.Z.B.x.x.x.v.~.T.4.4.Y.~.e.~.`..X|.}. X|.|.|.W.d.JXLXLXPXPXJXVXJXPX",
|
||||
"p p p = = > p s N rXdXdXfXdXpXtX_ ! p.W.[.!.b.C.c.4.c.b.b.v.b.v.v.x.x.v.D.S.v.C.S.B.T.R.T.v.l.4.Y.4.Y.E..XOX|. X+X X=Xd.d VXLXLXLXLXPXGXKXKX",
|
||||
"m f f p 5 6 p s N 6XpXdXdXgXgXdXpX%XF.H.C.c.T.H.C.Y.Y.4.x.v.B.B.x.x.x.x.v.B.S.N.S.B.x.T.Q.~.l.l.4.4.5.e.XXoXoX@X@XOX*X:Xi VXLXLXLXKXPXKXKXKX",
|
||||
"m d m f f p f f N $XyXiXpXyXrX6X-XH.C.H.F.c.Q.H.T.Y.4.4.x.B.B.B.v.4.c.V.x.x.x.v.z.x.z.b.V.[.T.l.4.2.2.4.~.@X.XoXOXoX|.X.C GXLXLXFXAXAXKXFXFX",
|
||||
"d d d d f f f f b J ( $XtX_ ^ J F.K._.'.Q.5.Y.c.Y.e.4.x.v.B.S.Z.A.N.A.Z.x.x.B.C.Y.x.x.B.B.v.v.T.4.2.2.2.e.@X+X+X+X|.I.,XO.MXAXkX9XhXjXAXFXVX",
|
||||
"d d d f f d m d m m B / rXqX%X6.z.C.K._.c.2.c.b.Y.4.Y.x.v.S.B.M.Z.A.m.N.H.N.A.N.B._.b.b.v.l.l.~.c.c.z.4.4..XbX*X+X{.].;X[ ..I ..$.<X<X>XeXcX",
|
||||
"d f f f d d d d z z m B ( zXOXP.H.Q._.Q.3.2.c.H.R.T.x.v.B.B.S.S.N.J.J.|.|.P.n.4.Y.[.T.x.4.2.2.Q.C.S.Z.C.4.(.bX*XOX{.L.k I X.O.%.<X<X<X<XwXMX",
|
||||
"f f f f d d d d d z l J 6XqXoX].P.H.b.c.2.4.b.n.v.R.T.v.V.D.m.Z.Z.N.P. X].c.<.:.3.c.Q.l.l.4.5.T.B.Z.Z.S.x.E.nX*X XI.F.h .>X>X$.$.$.&.<X9X4X",
|
||||
"z l l d d l d d B J E _ iXuXk.XX].K.b.Y.2.g.c.x.v.B.R.v.S.'.'.M.n.n.H.F.b.l.Q.!.E.[.T.T.b.K.J.C.n.S.A.S.x.e.nX+X{.I.f.j .O.O. .O.$.#.<X<XU ",
|
||||
"l d d d d z f B $X$X_ rXuXeXxXj.Y.'.V.b.5.e.(.5.n.M.b.B.Z.S.[.[.[.`.F.V.N.].+XOX_.b.b.T.B.A.D.B.v.S.A.S.v.5.bX XI.{.7 j .O.} .#.#.| <X<XU ",
|
||||
"d d d D z m F ( _ _ ` sXNXNXNXwXd.).].V.b.4.g.~.x.R.R.M.M.n.z.[.|.OX|.N.A.'.|.|.B.C.b.b.C.C.V.v.B.S.D.S.v.5.*X XI.g.- 2 U .{ { #.| { [ j h ",
|
||||
"f d m D d F ) _ ^ ` yXZXDXVXcX5XW a.@XoXR.R.l.Y.x._._.v.B.x.4.Y.c.|.`.b.'.H.V.D.S.S.B.b.V.V.C.v.v.S.S.S.n.Q.OXI.I.r.f i a [ [ { } [ ] ] A A ",
|
||||
"p p d d F ( ) ~ _ tXyXyXaXuXrXQ M G j.@X3XXXx.x.x.v.z.v.v.Y.Y.l.5.~.T.x.S.A.A.m.A.N.b.C.C.N.B.v.v.B.B.B.v.`.{.I.W.$ i - a I ' ' { { ] ] I A ",
|
||||
"& > p d E ( ! ~ ` tXrXrXtXrX6Xp.M G ^.@X3X3Xl.4.x.v.z.x.v.x.l.z.c.c.z.n.A.A.J.A.A.D.b.b.C.D.B.v.v.n.v.v.b.|.I.I.q X + g 2XX.' { } { { ] [ [ ",
|
||||
"O . , p B ! ~ ` iX` rXtXtXrX( H K D g.`.oXT.x.x.v.n.Y.l.T.z.x.x.v.b.b.V.J.N.N.D.V.C.b.C.V.D.C.x.x.x.x.l.[.{.I.f., % i 2XjX .' | } [ ] ] [ { ",
|
||||
"+ X O > b B / iXiX&XrXrXrX#XF D D D t.`.C.n.v.v.v.x.q.x.T.x.l.x.x.v.C.D.N._.`.R.B.b.C.V.C.V.b.l.4.4.4.4.|.L.W.i 9 :XjX,Xj v { ] ] { { { } ",
|
||||
"> > : 1 p n E 6XtX$X) ) Q F D D K G w.v.B.B.v.x.v.4.4.v.R.4.4.l.b.C.C.C.'.`.Y.b.b.C.V.V.V.C.T.2.2.2.:.Y.|.!.t.- h #.<X:Xa 1 I { ] { { } { #.",
|
||||
"d g b g M D D E ( J N N D D G K t.f.4.x.b.v.v.v.v.4.2.l.T.T.T.b.C.V.C.c.4.4.b.V.V.C.C.C.C.C.Y.2.8.:.:.^.g.i.t.v 2X| a > # i [ { { } { | #.} ",
|
||||
"D D D D D D D D F D D d p d M Z a.!.v.4.z.v.v.v.v.e.:.2.x.x.B.C.V.V.v.2.2.4.T.V.V.C.C.C.b.Y.2.:.0.:.c u.u.u.a.>Xj , = : 1 [ | | | | #.#.] ",
|
||||
"F F F F F F K F D K K D p 2 2 p g g._.l.l.v.z.v.v.4.:.<.4.b._.b.5.5.2.<.8.2.4.b.C.C.R.Y.3.<.>.>.w e >.9.u.i.t.h + ; p - - 1 [ .| | #.&.] ] ",
|
||||
"F K G F F F F F L F F F M p 2 1 1 u.`.'.z.z.z.c.T.Y.3.e.Q._.Q.3.0.7.w >.>.<.<.<.4.5.4.2.<.>.>.w e e 9.7.u.i.a.I a Z a - - 1 [ | } | &.[ ] ] ",
|
||||
"D K F K L Y L K K Y L L L g i - 7.E.!.oX~.T.Q.Q.Q._._._.'.R.b.1.0.,.,.r w w e w >.>.<.>.>.w e e 0 r 7.t.u.p.M j A h 1 > = - I .} #.} ] { ] ",
|
||||
"F L Y L F F L F L F L L F K D i x y.f.E.E.T.Y.Y.Q._.Q._.C.T.c.1.>.r ,.>.>.w w w r w e r e e e 0 0 x t.u.u.R C C a 1 - > * - k .#.} ] ] { ] ",
|
||||
"K F L K L L L K Y K R F Q 4XeXW 1 1 1 > l f.F.T.T.Q.Q.Q.Q.T.T.3.>.w >.>.w w w w e e e e e e 0 0 t r u.i.R D a * 2 2 2 * , = a } #.] ] ] ] ] ",
|
||||
"F K L F K L F L L F F d.CXLXLXDX1X2 1 - . 8 ).^.b.H.Q.H.Q.Y.T.c.>.w w w w w w w r e e e 0 e 0 0 t 0 u.G p 2 + @ + 1 2 1 O & i .} A A ] ] A ",
|
||||
"L L L L P L L L L P E lXLXLXLXKXFX,Xi - b 4XJXGX).5.c.F.F.T.b.E.<.,.w >.r w r r q 0 0 0 0 0 0 t 4 0 H 6 + * , , * + 2 2 & X i O.] j A A ] C ",
|
||||
"L K L K K L L L L P B eXIXLXKXKXKXDXT p 4XJXLXLXPXmXf.5.Y.Y.Q.5.,.w w ,.r w r r 0 0 0 0 0 0 0 0 q H , & * & * + + + + 1 2 + p @.A j j A ] 3 ",
|
||||
"L L P P P L P P K E 0XHXLXLXKXIXKXMXT Q CXLXLXLXLXLXDXj.2.c.Y.w.,.,.,.r e e e 0 0 0 0 0 0 0 0 l s.P O @ + + O O + + O O 2 2 2 n 2 A j S S 2 ",
|
||||
"L L Z L P L P F Z *.SXLXLXLXFXFXGXMXwXVXIXLXLXLXLXLXLXLXxXw.4.5.1.,.H q x q q 0 e q 0 q q l l g o.n O + * + O O O O O O O + 1 + 2 j j S S + ",
|
||||
"P L L P P P E P P Q lXLXLXPXFXFXGXVXJXLXLXLXLXLXLXPXLXLXLXBXj.1.<.w q r r x l c e 0 8 8 s g g g U 1 ; * ; + @ o O O O . O O + 2 2 1 2 S n + ",
|
||||
"Z L P P P P F P S Q lXLXLXPXKXAXAXFXPXLXLXPXLXLXLXLXLXLXLXLXKXvXa.x t 0 0 l 0 l l l f D i 1 i T C * ; ; ; ; ; @ , , O O X X O O 2 2 1 2 3 @ ",
|
||||
"L L P P P P E P P Q lXLXLXPXKXMXcXJXLXLXPXLXLXLXLXLXLXPXLXLXLXLXLXKXDXvXz s s z f p p C i 1 i K D i ; > ; 2 ; 3 ; 2 2 @ @ O o o + 2 2 2 2 + ",
|
||||
"Z P P P P P P P P *.CXLXKXFXAXvXcXHXPXLXLXLXLXLXPXLXLXLXPXJXLXLXLXLXKXDXR s s g f a a i a k K g g f p p ; 2 2 2 2 2 2 3 2 2 @ 1 j j 2 2 n * "
|
||||
};
|
9
ImageMagick/PerlMagick/t/input_16.miff
Normal file
BIN
ImageMagick/PerlMagick/t/input_70x46.cmyk
Normal file
1
ImageMagick/PerlMagick/t/input_70x46.gray
Normal file
|
@ -0,0 +1 @@
|
|||
/0234323221/.//-.146:?BBCEP[bjrvtrla_^[WUTTTVXae\?63320./..>Yu<59>NPv遥V./122102220..00/01358>@?ADMTYhqtutk_^]ZWTSSRTWcj\964220//0,7PjаFF^ネW,,..-.-------../1025477:=CGIM]jqsqb[\ZXTSRQPSZfkd<54321111/.4V支G96CNX,,--++**+++,--.-...03567;@ABIS\grr^XXWURPPPOU_g}雲A4//../00.-d。茎]k紫`...-+*)'***)(+-,-+,-354369;;DRVYbhZUTTRPNMMQY\o到zU=/)--,-.-*i悚シケヲャ評/.000/.++))))*,-++.0463235635FRUSYVTRSRMLJMX\e<>梔mV:*))*+-,'^李オイ惧サ2236632/0-*++./0/037::63465218FOOPTTQOOLIHPY^l∩沁x\8&'***'%X<>駐湯}P778:=<:88621223478:>@?:8899868BRYURRMLLGnrSXcw}込酪推`:+(,,0Mju<75>窮yR89=??AA@@><;;8547<?CC?<;;:Z`Vg`\_^^_^QLdsu]csklyч鰍~t^85?[zz{′剄rX66<@BCCDD?=><:769=ACA>;;9T}`Td[_dWaiomnm`gok㏄q{nnquzzn|FBv恙惷フマーr_247;BEGHDIA<:9989=BB?<:9=cWS\XS\__dbghigcau~zo[itw{y||≠月tハ矍鴕<E79F8D>マ閲/.27=CJHW<48>YB5118<AB;425O\XV_d_Y\d]cgigbceipoeZ]ozz}}ф㈱{嬲レ<E5ACB2><EFBE9A><EFBFBD><EFBFBD>隯セキ7303:BKIcェクィ敏K@9;@=CQNM[Z_[]efdfhmggihbbbo}a[^gqrxミラ糾<E383A9>uケ<75><EFBDB9><EFBFBD>涇<EFBFBD>鉈?=615?HIY楙ツテッ<EFBE83>R:9L}竹p]W\ahkfonhrsghf_cedxm]_evjy~ш<>牛液<E6B6B2><C280>洄<EFBFBD><E6B484>IG@97=EEP清コサウァ媒g`t~uhphaeigdfhc`aksldglhj{rg_`fals<6C>㈹<EFBFBD>掉Pヒ<50><EFBE8B><EFBFBD><EFBFBD><EFBFBD>鋏<EFBFBD>NIC=@FGP鹿ョウアオウョ繋qmgnrkij\^ejga^_acjifge_tsxa`^^^c<>酎吏」秋ヒ<E7A78B><EFBE8B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PNKIGJKS<4B>洫「伯衛oqpeqqkcc^dkfgd_coa_`ccadkrSa]\[[y投侍悼~b<><62><EFBFBD>顆韜POONNMMMNc{㍽〈`lquwpbibg_^_dglkkjif_blol]`jdcaq`WYVi麿屎厭刹ネレセィィクマ睹NNNLMNPQPOXm煙<6D>equtbWhkl\aadmfeee_eqjngiwfjc_`yedf^[制「揆yw}p{滋、涕ケMMMKMNNQQPP]|囃sqmvo]Vinzv^aiiklhjoьqa[j}nc^XXoiklk[ォ」<EFBDAB>vYrヮ吏擒亟タMMMNNOPQQPNb於宦vpkeY_eegzjfmnddacv<63>dSE[asda[_ufkjj^oー」鋼mOヵ卵数<E58DB5>ゥ朧OOOOOPNZeh{白滑RhfYih`fgqji}xeaenmh_uvo〈lklppckjj`hウ怐z]Wы糾資喋噎QQQQQQN\л粥ウキozlg]iテcelifl<66>ネnf}尓~enqfkrjejkib^ャ捜zCUlユ去歯術ORTTTQ\z}┫ワ<E294AB>アk<EFBDB1>f`m{_pocdde≧棟kg|劫hjhflnkdhilkg]<5D>越o9Drマ∞<E3839E>v[TINTWT`}~k{」ヌラモコ<EFBE93>w<EFBFBD>xkbgfuvhic]fg延ixrkoljjkklkfgiljdm布}[N@Uwy|<7C>skbfAEOT_ywer彫ァ」梺lW^t嗇<74>[cgchhbed_xr`ghiegijllkhfghkjcョxl4?5Rmqw}ytrqo49FMfoWdヲ梼件<E6A2BC>Y\x墾・b^bdd`gabcchcalljgimikklhdfdffj仇~D*/Vァo<6F>ytsw--7B\aa<61>結去施^\]p<>t`cead_qcb`bhimnhinnihlnojcccaaz~wb4/Fォナpпwwvw}/,0:MYr囿<72>博}cZ]]d~qbfcg_aco_ab`bmohwピiijmmmj^``ZZ<5A>rA/8言弩nxu||z<>=<;@JRd<52>【sb\]_fdddfedf^Zjw[^bilnl{<7B>iijlnlmk]YXPl益f4G汚舟Ap~wz~c庚NNOSWZfohYUV[`cfk[`hgdef_T`iolkommd\`imkkkllnhYTOK{slhiヲ<69>:1>q<>~≡瓜\\[\^_^^\YLGNX]orc_dgedfaO\^ejkmmeXW\jonmmmlhXSPJLjfjx忙,657=s<>ャ緒v_```_cb`aaaYHACFMswb^deed_NQ]itj]^WXZY[hpqqi[SOOLETeijeE-;J97;s<><73>努u```aabbbbbbbUC?<>i<>ebfhii_dsxnYYTONQRRX_c^TPOMLHF\`gkwlMdL76<t<>鞄zvu``_cbdccdccdaO@;Zew度lnruvxxtriXUPNNMLLKMPQONKGHDL^bfhTYiL::7;j援逗qzs`acaabbbccdd_`X=V^bpqmikpprsqqjUOOOONMLLKKKKJIFDBObdfhcaU<7;76[ь<>synabcbbbbbccc\p浣y97;:Hcmlqrrrooo^PONNMMMMKJJJIFCC?KehgZL8?E<776Oヰqlsskabcbbbbccb^<5E><>笂E97-F奔jpponmofQNNMKLLLKHFGFECA;GgcL;2209D703Eャdkpqhbbbbbccddcjチ<6A><EFBE81><EFBFBD><EFBFBD><EFBFBD>J6I夲謠dhlkmmhSOMMKLMMIEDEEED=7J]@378753=A3+D虐`djr^bbbbbbdddadー<64><EFBDB0><EFBFBD>lE暮<45><E69AAE>シi\jjnaSPNLKLKIEECCCDECGU724444433<>/H~Z\[fqMdddddddfdl・<6C><EFBDA5><EFBFBD><EFBFBD>ユnuヒ<75><EFBE8B><EFBFBD><EFBFBD><EFBFBD>縲Zfl`UQOLJHGEEDBCEFHMtj.4332111/29:FPLZUek=dddddceed~゚<><EFBE9F>鐱褊マッヒ<EFBDAF><EFBE8B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>__`VROMLLHFGEEEINOO|T-3431/0/.0/388<MSgc3dddeeddgeqハ<71><EFBE8A><EFBFBD>鱧ユ蕈<EFBE95><E89588><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ラ~YOKMLMOLJIHGF?NVYp94564200.,-/01<>8CbW0cdeeedeggqテ<71><EFBE83><EFBFBD><EFBFBD>ユ碾<EFBE95><E7A2BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TA@FKIIJJJ\C<Dl[4:::::9840.+,.0AD8IK4bceddefgfpヘ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ソ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>タVGMNNLKaE?EdXD<;;<<><=;93.-+.ACAD5`cgffffeg<65><67><EFBFBD>タタ脯<EFBE80><E884AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>臚IMMKKIGL^`SRPH@<<>==>?A@<9=SUDIR;
|