MagickImage.java
上传用户:qingzhou
上传日期:2013-04-21
资源大小:733k
文件大小:54k
源码类别:

破解

开发平台:

Java

  1. package magick;
  2. import java.awt.Dimension;
  3. import java.awt.Rectangle;
  4. /**
  5.  * Encapsulation of the ImageMagick Image object.
  6.  * We use MagickImage here so as not to be confused
  7.  * with java.awt.Image.
  8.  *
  9.  * @author Eric Yeo
  10.  */
  11. public class MagickImage extends Magick {
  12.     /**
  13.      * Internal ImageMagick Image handle.
  14.      * We use long (64-bits) for portability.
  15.      */
  16.     private long magickImageHandle = 0;
  17.     /**
  18.      * Constructor.
  19.      */
  20.     public MagickImage()
  21.     {
  22.     }
  23.     /**
  24.      * Construct a MagickImage that is made up of all
  25.      * the images in the specified array. If any of
  26.      * the images contains multiple frames, the frames
  27.      * are also appended to the new image. All the
  28.      * images are cloned.
  29.      * @param images array of images to linked
  30.      */
  31.     public MagickImage(MagickImage[] images)
  32.         throws MagickException
  33.     {
  34.         initMultiImage(images);
  35.     }
  36.     /**
  37.      * Helper for the constcutor to create an image that
  38.      * is made up of all the images in the specified array.
  39.      * If any of  the images contains multiple frames, the
  40.      * frames are also appended to the new image. All the
  41.      * images are cloned.
  42.      * @param images array of images to linked
  43.      * @throws MagickException if the new image cannot be constructed
  44.      * @see MagickImage
  45.      */
  46.     private native void initMultiImage(MagickImage[] images)
  47.         throws MagickException;
  48.     /**
  49.      * Constructor that also reads an image file
  50.      * specified in the parameter.
  51.      *
  52.      * @param imageInfo the ImageInfo for an image file to read
  53.      * @param boolean true for ping the image only.
  54.      *
  55.      * @exception MagickException on error
  56.      */
  57.     public MagickImage(ImageInfo imageInfo, boolean ping)
  58.         throws MagickException
  59.     {
  60.         if (ping) {
  61.             pingImage(imageInfo);
  62.         }
  63.         else {
  64.             readImage(imageInfo);
  65.         }
  66.     }
  67.     /**
  68.      * Pings the image.
  69.      * @param imageInfo the ImageInfo for an image file to read
  70.      */
  71.     public native void pingImage(ImageInfo imageInfo)
  72.         throws MagickException;
  73.     /**
  74.      * Constructor that also reads an image file
  75.      * specified in the parameter.
  76.      *
  77.      * @param imageInfo the ImageInfo for an image file to read
  78.      *
  79.      * @exception MagickException on error on error
  80.      */
  81.     public MagickImage(ImageInfo imageInfo)
  82. throws MagickException
  83.     {
  84. readImage(imageInfo);
  85.     }
  86.     /**
  87.      * Constructor that takes the image to be read from memory.
  88.      *
  89.      * @param imageInfo the ImageInfo instance for default settings, etc
  90.      * @param blob the image to be read in memory
  91.      *
  92.      * @exception MagickException on error
  93.      */
  94.     public MagickImage(ImageInfo imageInfo, byte[] blob)
  95. throws MagickException
  96.     {
  97. blobToImage(imageInfo, blob);
  98.     }
  99.     /**
  100.      * This method will clean up the handle.
  101.      */
  102.     protected void finalize()
  103.     {
  104. destroyImages();
  105.     }
  106.     /**
  107.      * Allocate a blank image object.
  108.      *
  109.      * @param imageInfo specifies the parameters for the blank image
  110.      */
  111.     public native void allocateImage(ImageInfo imageInfo);
  112.     /**
  113.      * Read the image specified in the ImageInfo object.
  114.      *
  115.      * @param imageInfo specifies the file to read from
  116.      * @exception MagickException on error
  117.      */
  118.     public native void readImage(ImageInfo imageInfo)
  119. throws MagickException;
  120.     /**
  121.      * Write the image specified in the ImageInfo object.
  122.      *
  123.      * @param imageInfo specifies the writing parameters
  124.      *
  125.      * @exception MagickException on error
  126.      */
  127.     public native boolean writeImage(ImageInfo imageInfo)
  128. throws MagickException;
  129.     /**
  130.      * Return the image file name of the image.
  131.      *
  132.      * @return the file name of the image
  133.      * @exception MagickException on error
  134.      */
  135.     public native String getFileName()
  136. throws MagickException;
  137.     /*
  138.      * Set the image file name.
  139.      *
  140.      * @param fileName new file name
  141.      *
  142.      * @exception MagickException on error
  143.      */
  144.     public native void setFileName(String fileName)
  145. throws MagickException;
  146.     /*
  147.      * Set the filter type.
  148.      *
  149.      * @param the filter type from constants defined in the class FilterType
  150.      * @see FilterType
  151.      * @exception MagickException on error
  152.      */
  153.     public native void setFilter(int filter)
  154. throws MagickException;
  155.     /*
  156.      * Get the filter type.
  157.      *
  158.      * @return the filter type as defined in the class FilterType
  159.      * @see FilterType
  160.      * @exception MagickException on error
  161.      */
  162.     public native int getFilter()
  163. throws MagickException;
  164.     /*
  165.      * Return the number of columns and rows of the image.
  166.      * @return the dimension of the image
  167.      * @exception MagickException on error
  168.      */
  169.     /**
  170.      * Adds random noise to the image.
  171.      *
  172.      * @param noiseType The type of noise: Uniform, Gaussian, Multiplicative,
  173.      *                  Impulse, Laplacian, or Poisson.
  174.      * @see NoiseType
  175.      * @return An image with additional noise.
  176.      * @exception MagickException on error
  177.      */
  178.     public native MagickImage addNoiseImage(int noiseType)
  179. throws MagickException;
  180.     public native Dimension getDimension()
  181. throws MagickException;
  182.     /**
  183.      * Return the depth of the image.
  184.      *
  185.      * @return the depth of the image.
  186.      * @exception MagickException on error
  187.      */
  188.     public native int getDepth()
  189. throws MagickException;
  190.     /**
  191.      * Blurs an image. We convolve the image with a Gaussian operator of
  192.      * the given radius and standard deviation (sigma). For reasonable
  193.      * results, the radius should be larger than sigma. Use a radius of 0
  194.      * and BlurImage() selects a suitable radius for you.
  195.      *
  196.      * @param raduis The radius of the gaussian, in pixels, not counting
  197.      *               the center pixel
  198.      * @param sigma The standard deviation of the gaussian, in pixels
  199.      *
  200.      * @return A blurred image.
  201.      * @exception MagickException on error
  202.      */
  203.     public native MagickImage blurImage(double raduis, double sigma)
  204. throws MagickException;
  205.     /**
  206.      * Return the storage class of the image.
  207.      *
  208.      * @return the store class as defined in ClassType
  209.      * @see ClassType
  210.      * @exception MagickException on error
  211.      */
  212.     public native int getStorageClass()
  213. throws MagickException;
  214.     /*
  215.      * Annotates an image with test. Optionally the annotation can
  216.      * include the image filename, type, width, height, or scene
  217.      * number by embedding special format characters.
  218.      *
  219.      * @param info the anotation information
  220.      */
  221.     public native void annotateImage(DrawInfo info);
  222.     /**
  223.      * Surrounds the image with a border of the color defined by
  224.      * the border color member of the image structure. The width
  225.      * and height of the border are defined by the corresponding
  226.      * members of the Rectangle.
  227.      *
  228.      * @param borderInfo the rectangle for which border is drawn
  229.      * @return an Image with a border around it
  230.      * @exception MagickException on error
  231.      * @see #setBorderColor
  232.      * @see #getBorderColor
  233.      */
  234.     public native MagickImage borderImage(Rectangle borderInfo)
  235. throws MagickException;
  236.     /**
  237.      * Creates a new image that is a copy of an existing one with the
  238.      * edges highlighted, producing a 'charcoal-drawing' effect.
  239.      *
  240.      * @param raduis The radius of the pixel neighborhood.
  241.      * @param sigma The standard deviation of the gaussian, in pixels
  242.      *
  243.      * @return A charcoal-like image.
  244.      * @exception MagickException on error
  245.      */
  246.     public native MagickImage charcoalImage(double raduis, double sigma)
  247. throws MagickException;
  248.     /**
  249.      * Creates a simulated three-dimensional button-like effect by
  250.      * lightening and darkening the edges of the image. Members width
  251.      * and height of raiseInfo define the width of the vertical and
  252.      * horizontal edge of the effect. 
  253.      *
  254.      * @param raiseInfo the rectangle for which border is drawn
  255.      * @param raise true to create raise effect, false to lower
  256.      * @return true if successful, false otherwise
  257.      * @exception MagickException on error
  258.      */
  259.     public native boolean raiseImage(Rectangle raiseInfo, boolean raise)
  260. throws MagickException;
  261.     /**
  262.      * Creates a new image that is a subregion of the original.
  263.      *
  264.      * @param chopInfo the rectange to chop the image
  265.      * @exception MagickException on error
  266.      */
  267.     public native MagickImage chopImage(Rectangle chopInfo)
  268. throws MagickException;
  269.     /**
  270.      * Colourises the image with a pen colour.
  271.      *
  272.      * @param opacity string percentage value for opacity
  273.      * @param target a colour value
  274.      * @exception MagickException on error
  275.      */
  276.     public native MagickImage
  277. colorizeImage(String opacity, PixelPacket target)
  278. throws MagickException;
  279.     /**
  280.      * Composite the image supplied onto itself at the specified offsets.
  281.      * @exception MagickException on error
  282.      */
  283.     public native boolean compositeImage(int compOp,
  284.  MagickImage compImage,
  285.  int xOff,
  286.  int yOff)
  287. throws MagickException;
  288.     /**
  289.      * Enhances the intensity differences between the lighter and
  290.      * darker elements of the image.
  291.      * @return a boolean value to indicate success
  292.      * @exception MagickException on error
  293.      */
  294.     public native boolean contrastImage(boolean sharpen)
  295. throws MagickException;
  296.     /**
  297.      * Returns a copy of all fields of the input image.
  298.      * The the pixel memory is allocated but the pixel data is copy
  299.      * is optional.
  300.      * @return a cloned image
  301.      * @exception MagickException on error
  302.      */
  303.     public native MagickImage cloneImage(int columns, int rows,
  304.  boolean clonePixels)
  305. throws MagickException;
  306.     /**
  307.      * Create a new image of 8-bit component of the specified dimensions.
  308.      *
  309.      * @param width the width of the new image
  310.      * @param height the height of the new image
  311.      * @param map the components of a pixel
  312.      * @param pixels the raw image in an array of pixels
  313.      * @exception MagickException on error
  314.      */
  315.     public native void constituteImage(int width, int height,
  316.        String map, byte[] pixels)
  317. throws MagickException;
  318.     /**
  319.      * Create a new image of 32-bit component of the specified dimensions.
  320.      *
  321.      * @param width the width of the new image
  322.      * @param height the height of the new image
  323.      * @param map the components of a pixel
  324.      * @param pixels the raw image in an array of pixels
  325.      * @exception MagickException on error
  326.      */
  327.     public native void constituteImage(int width, int height,
  328.        String map, int[] pixels)
  329. throws MagickException;
  330.     /**
  331.      * Create a new image of float component of the specified dimensions.
  332.      *
  333.      * @param width the width of the new image
  334.      * @param height the height of the new image
  335.      * @param map the components of a pixel
  336.      * @param pixels the raw image in an array of pixels
  337.      * @exception MagickException on error
  338.      */
  339.     public native void constituteImage(int width, int height,
  340.        String map, float[] pixels)
  341. throws MagickException;
  342.     /**
  343.      * Creates a new image that is a subregion of the original.
  344.      *
  345.      * @param chopInfo the subimage
  346.      * @return a subimage of the original
  347.      * @exception MagickException on error
  348.      */
  349.     public native MagickImage cropImage(Rectangle chopInfo)
  350. throws MagickException;
  351.     /**
  352.      * Cycles the image colormap by a specified amount.
  353.      * @exception MagickException on error
  354.      */
  355.     public native void cycleColormapImage(int amount)
  356. throws MagickException;
  357.     /**
  358.      * Called by finalize to deallocate the image handle.
  359.      */
  360.     public native void destroyImages();
  361.     /**
  362.      * Draws a primitive (line, rectangle, ellipse) on the image.
  363.      * @return a boolean value to indicate success
  364.      * @exception MagickException on error
  365.      */
  366.     public native boolean drawImage(DrawInfo aInfo)
  367. throws MagickException;
  368.     /**
  369.      * Finds edges in an image. Radius defines the radius of the convolution
  370.      * filter. Use a radius of 0 and Edge() selects a suitable radius for you.
  371.      *
  372.      * @param raduis The radius of the pixel neighborhood.
  373.      *
  374.      * @return A new image with the edges hilighted.
  375.      * @exception MagickException on error
  376.      */
  377.     public native MagickImage edgeImage(double raduis)
  378. throws MagickException;
  379.     /**
  380.      * Returns a grayscale image with a three-dimensional effect.
  381.      * We convolve the image with a Gaussian operator of the given radius
  382.      * and standard deviation (sigma). For reasonable results, radius
  383.      * should be larger than sigma. Use a radius of 0 and Emboss() selects
  384.      * a suitable radius for you.
  385.      *
  386.      * @param raduis The radius of the pixel neighborhood.
  387.      * @param sigma The standard deviation of the Gaussian, in pixels
  388.      *
  389.      * @return A new, embossed, image.
  390.      * @exception MagickException on error
  391.      */
  392.     public native MagickImage embossImage(double raduis, double sigma)
  393. throws MagickException;
  394.     /**
  395.      * Applies a digital filter that improves the quality of a noisy image.
  396.      *
  397.      * @return A new, enhanced, image.
  398.      * @exception MagickException on error
  399.      */
  400.     public native MagickImage enhanceImage()
  401. throws MagickException;
  402.     /**
  403.      *  Performs histogram equalization.
  404.      * @return a boolean value to indicate success
  405.      * @exception MagickException on error
  406.      */
  407.     public native boolean equalizeImage()
  408. throws MagickException;
  409.     /**
  410.      * Creates a new image that reflects each scanline
  411.      * in the vertical direction.
  412.      * @return a new image that has been flipped
  413.      * @exception MagickException on error
  414.      */
  415.     public native MagickImage flipImage()
  416. throws MagickException;
  417.     /**
  418.      * Creates a new image that reflects each scanline in the
  419.      * horizontal direction 
  420.      * @return a new image that has been flopped
  421.      * @exception MagickException on error
  422.      */
  423.     public native MagickImage flopImage()
  424. throws MagickException;
  425.     /**
  426.      * Converts the reference image to gamma corrected colors.
  427.      * @return a boolean value to indicate success
  428.      * @exception MagickException on error
  429.      */
  430.     public native boolean gammaImage(String gamma)
  431. throws MagickException;
  432.     /**
  433.      * Blurs the image using a gaussian operator. The effectiveness of the
  434.      * operator - and the amount of blurring - is controlled by selecting
  435.      * a 'radius' and a 'sigma'. The radius sets the circle around each
  436.      * pixel of the 'neighborhood' used for calculating an average pixel
  437.      * color. Sigma determines how much the calculated average affects the
  438.      * pixel.
  439.      *
  440.      * @param raduis The radius of the Gaussian, in pixels, not counting
  441.      *               the center pixel
  442.      * @param sigma The standard deviation of the Gaussian, in pixels.
  443.      *
  444.      * @return A new, blurred, image.
  445.      * @exception MagickException on error
  446.      */
  447.     public native MagickImage gaussianBlurImage(double raduis, double sigma)
  448. throws MagickException;
  449.     /**
  450.      * Implodes the image's pixels about the center. 
  451.      *
  452.      * @param amount Amount of implosion if positive, explosion if negative.
  453.      *
  454.      * @return A new, imploded, image.
  455.      * @exception MagickException on error
  456.      */
  457.     public native MagickImage implodeImage(double amount)
  458. throws MagickException;
  459.     /**
  460.      * Returns True if the image is grayscale otherwise False is returned.
  461.      * @return a boolean value to indicate success
  462.      * @exception MagickException on error
  463.      */
  464.     public native boolean isGrayImage()
  465. throws MagickException;
  466.     /**
  467.      * Returns True if the image is monochrome otherwise False is returned.
  468.      * @return a boolean value to indicate success
  469.      * @exception MagickException on error
  470.      */
  471.     public native boolean isMonochromeImage()
  472. throws MagickException;
  473.     /**
  474.      * Creates a new image that is a integral size greater
  475.      * than an existing one. 
  476.      *
  477.      * @return a magnified image
  478.      * @exception MagickException on error
  479.      */
  480.     public native MagickImage magnifyImage()
  481. throws MagickException;
  482.     /**
  483.      * Floodfills the designated area with a matte value.
  484.      * @return a boolean value to indicate success
  485.      * @exception MagickException on error
  486.      */
  487.     public native boolean matteFloodfillImage(PixelPacket target,
  488.       int matte,
  489.       int x,
  490.       int y,
  491.       int method)
  492. throws MagickException;
  493.     /**
  494.      * Changes the color value of any pixel that matches target
  495.      * and is an immediate neighbor. If the method FillToBorderMethod
  496.      * is specified, the color value is changed for any neighbor pixel
  497.      * that does not match the bordercolor member of image.
  498.      *
  499.      * By default target must match a particular pixel color exactly.
  500.      * However, in many cases two colors may differ by a small amount.
  501.      * The fuzz member of image defines how much tolerance is acceptable to
  502.      * consider two colors as the same.  For example, set fuzz to 10 and the
  503.      * color red at intensities of 100 and 102 respectively are now
  504.      * interpreted as the same color for the purposes of the floodfill.
  505.      *
  506.      * @param drawInfo The draw info
  507.      * @param target The RGB value of the target colour
  508.      * @param x the starting x location of the operation
  509.      * @param y the starting y location of the operation
  510.      * @param method either FloodfillMethod or FilltoBorderMethod
  511.      * @return true or false depending on success or failure respectively
  512.      * @throws MagickException if any error occurs
  513.      * @see magick.PaintMethod
  514.      */
  515.     public native boolean colorFloodfillImage(DrawInfo drawInfo,
  516.                                               PixelPacket target,
  517.                                               int x,
  518.                                               int y,
  519.                                               int method)
  520.         throws MagickException;
  521.     /**
  522.      * Applies a digital filter that improves the quality of a noisy image.
  523.      * Each pixel is replaced by the median in a set of neighboring pixels
  524.      * as defined by radius.
  525.      *
  526.      * @param radius The radius of the pixel neighborhood.
  527.      *
  528.      * @return A new, filtered, image.
  529.      * @exception MagickException on error
  530.      */
  531.     public native MagickImage medianFilterImage(double radius)
  532. throws MagickException;
  533.     /**
  534.      * Creates a new image that is a integral size less than an existing one.
  535.      * @return a minified image
  536.      * @exception MagickException on error
  537.      */
  538.     public native MagickImage minifyImage()
  539. throws MagickException;
  540.     /**
  541.      * Modulates the hue, saturation, and brightness of an image.
  542.      * @return a boolean value to indicate success
  543.      * @exception MagickException on error
  544.      */
  545.     public native boolean modulateImage(String modulate)
  546. throws MagickException;
  547.     /**
  548.      * Negates the colors in the reference image. The Grayscale
  549.      * option means that only grayscale values within the image are negated.
  550.      * @return a boolean value to indicate success
  551.      * @exception MagickException on error
  552.      */
  553.     public native boolean negateImage(int grayscale)
  554. throws MagickException;
  555.     /**
  556.      * Normalizes the pixel values to span the full range of color values. 
  557.      * This is a contrast enhancement technique.
  558.      * @return a boolean value to indicate success
  559.      * @exception MagickException on error
  560.      */
  561.     public native boolean normalizeImage()
  562. throws MagickException;
  563.     /**
  564.      * Applies a special effect filter that simulates an oil painting.
  565.      * Each pixel is replaced by the most frequent color occurring in a
  566.      * circular region defined by radius.
  567.      *
  568.      * @param radius The radius of the pixel neighborhood.
  569.      *
  570.      * @return A new, simulated oil-painting, image.
  571.      * @exception MagickException on error
  572.      */
  573.     public native MagickImage oilPaintImage(double radius)
  574. throws MagickException;
  575.     /**
  576.      * Changes the color of an opaque pixel to the pen color.
  577.      * @param target the color to search for in the image
  578.      * @param penColor the color to replace it with
  579.      * @return a boolean value to indicate success
  580.      * @exception MagickException on error
  581.      */
  582.     public native boolean opaqueImage(PixelPacket target, PixelPacket penColor)
  583. throws MagickException;
  584.     /**
  585.      * This operation attempts to reduce the 'noise' in the image. This
  586.      * can be used to eliminate minor dust and scratches from scanned
  587.      * images.
  588.      *<p>
  589.      * The principal function of the noise peak elimination filter is to
  590.      * smooth the objects within an image without losing edge information
  591.      * and without creating undesired structures. The central idea of the
  592.      * algorithm is to replace a pixel with its next neighbor in value in
  593.      * a circular neighborhood if this pixel has been found to be noise. A
  594.      * pixel is defined as noise if the pixel is a minimum or maximum
  595.      * within the neighborhood.
  596.      *
  597.      * @param radius The radius of the pixel neighborhood.
  598.      *
  599.      * @return A new, filtered, image.
  600.      * @exception MagickException on error
  601.      */
  602.     public native MagickImage reduceNoiseImage(double radius)
  603. throws MagickException;
  604.     /**
  605.      * Converts the reference image from RGB to an alternate colorspace.
  606.      * The transformation matrices are not the standard ones: the weights
  607.      * are rescaled to normalized the range of the transformed values to
  608.      * be [0..MaxRGB].
  609.      * @param colorspace the target colorspace to transform to
  610.      * @return a boolean value to indicate success
  611.      * @exception MagickException on error
  612.      */
  613.     public native boolean rgbTransformImage(int colorspace)
  614. throws MagickException;
  615.     /**
  616.      * Rolls an image vertically and horizontally.
  617.      * @param xOffset An integer that specifies the number of columns 
  618.                       to roll in the horizontal direction
  619.      * @param yOffset An integer that specifies the number of rows to 
  620.                       roll in the vertical direction
  621.      * @return the rolled image
  622.      * @exception MagickException on error
  623.      */
  624.     public native MagickImage rollImage(int xOffset, int yOffset)
  625. throws MagickException;
  626.     /**
  627.      * Creates a new image that is a scaled size of an existing one
  628.      * using pixel sampling.
  629.      * @param cols An integer that specifies the number of columns in 
  630.                    the sampled image
  631.      * @param rows An integer that specifies the number of rows in the 
  632.                    sampled image
  633.      * @return the sampled image
  634.      * @exception MagickException on error
  635.      */
  636.     public native MagickImage sampleImage(int cols, int rows)
  637. throws MagickException;
  638.     /**
  639.      * Return a new image that is a scaled version of the
  640.      * original. To scale a scanline from x pixels to y pixels, each new
  641.      * pixel represents x/y old pixels. To read x/y pixels, read
  642.      * (x/y rounded up) pixels but only count the required fraction of
  643.      * the last old pixel read in your new pixel. The remainder of the
  644.      * old pixel will be counted in the next new pixel.
  645.      * @param cols An integer that specifies the number of columns in 
  646.                    the scaled image
  647.      * @param rows An integer that specifies the number of rows in the 
  648.                    scaled image
  649.      * @return the scaled image
  650.      * @exception MagickException on error
  651.      */
  652.     public native MagickImage scaleImage(int cols, int rows)
  653. throws MagickException;
  654.     /**
  655.      * Segment an image by analyzing the histograms of the color components
  656.      * and identifying units that are homogeneous using the fuzzy c-means
  657.      * technique.
  658.      *
  659.      * @param colorspace A {@link ColorspaceType} value that indicates the
  660.      *                   colorspace. Empirical evidence suggests that
  661.      *                   distances in YUV or YIQ correspond to perceptual
  662.      *                   color differences more closely than do distances
  663.      *                   in RGB space. The image is then returned to RGB
  664.      *                   colorspace after color reduction.
  665.      * @param cluster_threshold Specify cluster threshold as the number of
  666.      *                   pixels in each cluster must exceed the the
  667.      *                   cluster threshold to be considered valid.
  668.      * @param smoothing_threshold Smoothing threshold eliminates noise in
  669.      *                   the second derivative of the histogram. As the
  670.      *                   value is increased, you can expect a smoother
  671.      *                   second derivative. The default is 1.5.
  672.      *
  673.      * @return The actual number of colors allocated in the colormap.
  674.      * @exception MagickException on error
  675.      * @see ColorspaceType
  676.      */
  677.     public native int segmentImage(int colorspace, double cluster_threshold,
  678.                                                    double smoothing_threshold)
  679. throws MagickException;
  680.     /**
  681.      * Applies a special effect to the image, similar to the effect achieved
  682.      * in a photo darkroom by selectively exposing areas of photo sensitive
  683.      * paper to light.
  684.      *
  685.      * @param threshold Ranges from 0 to MaxRGB and is a measure of the
  686.      *                  extent of the solarization.
  687.      *
  688.      * @exception MagickException on error
  689.      */
  690.     public native void solarizeImage(double threshold)
  691. throws MagickException;
  692.     /**
  693.      * Sorts the colormap of a PseudoClass image by decreasing
  694.      * color intensity.
  695.      * @return a boolean value indicating success
  696.      * @exception MagickException on error
  697.      */
  698.     public native boolean sortColormapByIntensity()
  699. throws MagickException;
  700.     /**
  701.      * A special effects method that randomly displaces each pixel in a
  702.      * block defined by the radius parameter.
  703.      *
  704.      * @param radius Choose a random pixel in a neighborhood of this extent.
  705.      *
  706.      * @return A new, spread, image.
  707.      * @exception MagickException on error
  708.      */
  709.     public native MagickImage spreadImage(int radius)
  710. throws MagickException;
  711.     /**
  712.      * Swirls the pixels about the center of the image, where degrees
  713.      * indicates the sweep of the arc through which each pixel is moved.
  714.      * You get a more dramatic effect as the degrees move from 1 to 360.
  715.      *
  716.      * @param degrees Defines the tightness of the swirling effect.
  717.      *
  718.      * @return A new, swirled, image.
  719.      * @exception MagickException on error
  720.      */
  721.     public native MagickImage swirlImage(double degress)
  722. throws MagickException;
  723.     /**
  724.      * Initializes the red, green, and blue intensities of each
  725.      * pixel as defined by the colormap index.
  726.      * @exception MagickException on error
  727.      */
  728.     public native void syncImage()
  729.       throws MagickException;
  730.     /**
  731.      * Layers a texture onto the background of an image.
  732.      * @param image the image to use for texture
  733.      * @exception MagickException on error
  734.      */
  735.     public native void textureImage(MagickImage image)
  736.       throws MagickException;
  737.     /**
  738.      * Thresholds the reference image. 
  739.      * @param threshold the threshold value
  740.      * @return a boolean value indicating success
  741.      * @exception MagickException on error
  742.      */
  743.     public native boolean thresholdImage(double threshold)
  744.       throws MagickException;
  745.     /**
  746.      * Creates a new image that is a transformed size of of
  747.      * existing one as specified by the crop and image geometries.
  748.      *
  749.      * If a crop geometry is specified a subregion of the image is
  750.      * obtained. If the specified image size, as defined by the image
  751.      * and scale geometries, is smaller than the actual image size, the
  752.      * image is first minified to an integral of the specified image
  753.      * size with an antialias digital filter. The image is then scaled to
  754.      * the exact specified image size with pixel replication. If the
  755.      * specified image size is greater than the actual image size, the
  756.      * image is first enlarged to an integral of the specified image size
  757.      * with bilinear interpolation. The image is then scaled to the exact
  758.      * specified image size with pixel replication.
  759.      *
  760.      * @param cropGeometry a crop geometry string. This geometry 
  761.                            defines a subregion of the image.
  762.      * @param imageGeometry a image geometry string. The specified 
  763.                             width and height of this geometry string 
  764.                             are absolute.
  765.      * @exception MagickException on error
  766.      */
  767.     public native void transformImage(String cropGeometry,
  768.       String imageGeometry)
  769.       throws MagickException;
  770.     /**
  771.      * Converts the reference image from an alternate colorspace.
  772.      * The transformation matrices are not the standard ones:
  773.      * the weights are rescaled to normalized the range of the
  774.      * transformed values to be [0..MaxRGB].
  775.      *
  776.      * @param colorspace An unsigned integer value defines which 
  777.                          colorspace to transform the image to
  778.      * @return a boolean value indicating success
  779.      * @exception MagickException on error
  780.      */
  781.     public native boolean transformRgbImage(int colorspace)
  782.       throws MagickException;
  783.     /**
  784.      * Creates a matte image associated with the image.
  785.      * @param color The color to search for in the image
  786.      * @param opacity The opacity of the transparent image
  787.      * @return a boolean value indicating success
  788.      * @exception MagickException on error
  789.      */
  790.     public native boolean transparentImage(PixelPacket color, int opacity)
  791.       throws MagickException;
  792.     /**
  793.      * Creates a new image that is a copy of an existing one with
  794.      * the pixels sharpened using an "unsharp" masking technique.
  795.      *<p>
  796.      * This process starts by building a temporary, {@link
  797.      * #gaussianBlurImage blurred}, copy of the image. Then each
  798.      * pixel in this "unsharp" image is compared
  799.      * against its corresponding pixel in the original image. If
  800.      * their difference is above a threshold, a percentage of the
  801.      * difference is added back into the original pixel.
  802.      *<p>
  803.      * The first two arguments, <tt>radius</tt> and <tt>sigma</tt>,
  804.      * specify the blurring used to create the "unsharp" image. See
  805.      * {@link #gaussianBlurImage} for a detail explanation. It will
  806.      * suffice to say that the larger the radius and sigma the more
  807.      * this blurred image will diverge from the original.
  808.      *<p>
  809.      * The last two arguments, <tt>threshold</tt> and <tt>amount</tt>,
  810.      * specify the difference threshold required to apply an adjustment
  811.      * to each pixel and, once the threshold is reached, the amount of
  812.      * the difference to be added back into the original pixels. A high
  813.      * threshold will cause the algorithm to only adjust edge pixels.
  814.      * Specifying a threshold will adjust every pixel.
  815.      * 
  816.      * @param raduis    The radius of the gaussian, in pixels, not counting
  817.                         the center pixel
  818.      * @param sigma     The standard deviation of the gaussian, in pixels
  819.      * @param amount    The percentage of the difference between the original
  820.      *                  and the blur image that is added back into the original.
  821.      * @param threshold The threshold in pixels needed to apply the diffence
  822.      *                  amount.
  823.      *
  824.      * @return A sharpened image.
  825.      *
  826.      * @exception MagickException on error
  827.      */
  828.     public native MagickImage unsharpMaskImage(double raduis, double sigma,
  829.                                                double amount, double threshold)
  830. throws MagickException;
  831.     /**
  832.      * Creates a "ripple" effect in the image by shifting the pixels
  833.      * vertically along a sine wave whose amplitude and wavelength is
  834.      * specified by the given parameters.
  835.      *
  836.      * @param amplitude  Define the amplitude   of the sine wave.
  837.      * @param wavelength Define the wave-length of the sine wave.
  838.      *
  839.      * @return A new, "waved", image.
  840.      * @exception MagickException on error
  841.      */
  842.     public native MagickImage waveImage(double amplitude, double wavelength)
  843. throws MagickException;
  844.     /**
  845.      * Creates a new image that is a scaled size of an existing one.
  846.      * @return the zoomed image
  847.      * @exception MagickException on error
  848.      */
  849.     public native MagickImage zoomImage(int cols, int rows)
  850.       throws MagickException;
  851.     /**
  852.      * Get the pixels as 8-bit components from the image.
  853.      *
  854.      * @param x x coordinate of the origin of the subimage
  855.      * @param y y coordinate of the origin of the subimage
  856.      * @param width width of the subimage
  857.      * @param height height of the subimage
  858.      * @param map component order of the pixels
  859.      * @param pixels pixels of the subimage
  860.      * @return a boolean value indicating success
  861.      * @exception MagickException on error
  862.      */
  863.     public native boolean dispatchImage(int x, int y, int width, int height,
  864.     String map, byte[] pixels)
  865. throws MagickException;
  866.     /**
  867.      * Get the pixels as 32-bit components from the image.
  868.      *
  869.      * @param x x coordinate of the origin of the subimage
  870.      * @param y y coordinate of the origin of the subimage
  871.      * @param width width of the subimage
  872.      * @param height height of the subimage
  873.      * @param map component order of the pixels
  874.      * @param pixels pixels of the subimage
  875.      * @return a boolean value indicating success
  876.      * @exception MagickException on error
  877.      */
  878.     public native boolean dispatchImage(int x, int y, int width, int height,
  879.     String map, int[] pixels)
  880. throws MagickException;
  881.     /**
  882.      * Get the pixels as float components from the image.
  883.      *
  884.      * @param x x coordinate of the origin of the subimage
  885.      * @param y y coordinate of the origin of the subimage
  886.      * @param width width of the subimage
  887.      * @param height height of the subimage
  888.      * @param map component order of the pixels
  889.      * @param pixels pixels of the subimage
  890.      * @return a boolean value indicating success
  891.      * @exception MagickException on error
  892.      */
  893.     public native boolean dispatchImage(int x, int y, int width, int height,
  894. String map, float[] pixels)
  895. throws MagickException;
  896.     /**
  897.      * Return the image format (i.e., Gif, Jpeg,...)
  898.      *
  899.      * @return the string representing the image format
  900.      * @exception MagickException on error
  901.      * @author Abdulbaset Gaddah <agaddah@yahoo.com>
  902.      */
  903.     public native String getMagick()
  904. throws MagickException;
  905.     public String getImageFormat()
  906.         throws MagickException
  907.     {
  908.         return getMagick();
  909.     }
  910.     /*
  911.      * Set the image format (i.e., Gif, Jpeg,...).
  912.      *
  913.      * @param imageFormat new image format
  914.      * @exception MagickException on error
  915.      * @author Abdulbaset Gaddah <agaddah@yahoo.com>
  916.      */
  917.     public native void setMagick(String imageFormat)
  918. throws MagickException;
  919.     public void setImageFormat(String imageFormat)
  920.         throws MagickException
  921.     {
  922.         setMagick(imageFormat);
  923.     }
  924.     /**
  925.      * Return the number of unique colors in an image.
  926.      * @return the number of unique colors
  927.      * @exception MagickException on error
  928.      * @author Abdulbaset Gaddah <agaddah@yahoo.com>
  929.      */
  930.     public native int getNumberColors()
  931. throws MagickException;
  932.     /*
  933.      * Set the number of unigue colors in an image.
  934.      *
  935.      * @param numberColors new number of unigue colors in an image
  936.      * @exception MagickException on error
  937.      * @author Abdulbaset Gaddah <agaddah@yahoo.com>
  938.      */
  939.     public native void setNumberColors(int numberColors)
  940. throws MagickException;
  941.     /**
  942.      * Returns True if the Gif image is Animated otherwise False is returned.
  943.      *
  944.      * @return a boolean value representing the animated status of the image
  945.      * @exception MagickException on error
  946.      * @author Abdulbaset Gaddah <agaddah@yahoo.com>
  947.      */
  948.     public native boolean isAnimatedImage()
  949. throws MagickException;
  950.     /**
  951.      * Creates a new image that is a rotated copy of an existing one.
  952.      * Positive angles rotate counter-clockwise (right-hand rule), while
  953.      * negative angles rotate clockwise. Rotated images are usually larger
  954.      * than the originals and have 'empty' triangular corners. X axis.
  955.      * Empty triangles left over from shearing the image are filled with
  956.      * the color defined by the pixel at location (0,0).
  957.      *
  958.      * @param angle of rotation.
  959.      * @return A image that is a rotation of self
  960.      * @exception MagickException on error
  961.      */
  962.     public native MagickImage rotateImage(double degrees)
  963. throws MagickException;
  964.     /**
  965.      * Creates a new image that is a shear_image copy of an existing one.
  966.      * Shearing slides one edge of an image along the X or Y axis, creating
  967.      * a parallelogram. An X direction shear slides an edge along the X axis,
  968.      * while a Y direction shear slides an edge along the Y axis. The amount
  969.      * of the shear is controlled by a shear angle. For X direction shears,
  970.      * x_shear is measured relative to the Y axis, and similarly, for Y
  971.      * direction shears y_shear is measured relative to the X axis. Empty
  972.      * triangles left over from shearing the image are filled with the color
  973.      * defined by the pixel at location (0,0).
  974.      *
  975.      * @param x_shear x direction shear amount
  976.      * @param y_shear y direction shear amount
  977.      * @return a sheared image constructor from self.
  978.      * @exception MagickException on error
  979.      */
  980.     public native MagickImage shearImage(double x_shear, double y_shear)
  981. throws MagickException;
  982.     /**
  983.      * Analyzes the colors within a reference image and chooses a
  984.      * fixed number of colors to represent the image. The goal of
  985.      * the algorithm is to minimize the difference between the input
  986.      * and output image while minimizing the processing time. 
  987.      *
  988.      * @param quantizeInfo contains parameters for quantization
  989.      * @return a boolean value indicating success of the process
  990.      * @exception MagickException on error
  991.      */
  992.     public native boolean quantizeImage(QuantizeInfo quantizeInfo)
  993. throws MagickException;
  994.     /**
  995.      * Convert any colored image to grayscale.
  996.      *
  997.      * @deprecated Use QuantizeInfo with MagickImage.quantizeImage
  998.      *             to acheive the same effect.
  999.      * @exception MagickException on error
  1000.      */
  1001.     public void setGrayscale()
  1002. throws MagickException
  1003.     {
  1004. QuantizeInfo quantizeInfo = new QuantizeInfo();
  1005. quantizeInfo.setColorspace(ColorspaceType.GRAYColorspace);
  1006. quantizeInfo.setNumberColors(256);
  1007. quantizeInfo.setTreeDepth(8);
  1008. quantizeImage(quantizeInfo);
  1009.     }
  1010.     /**
  1011.      * Get the colorspace of the image.
  1012.      *
  1013.      * @return the colorspace as defined in ColorspaceType
  1014.      * @exception MagickException on error
  1015.      */
  1016.     public native int getColorspace()
  1017.         throws MagickException;
  1018.     /**
  1019.      * Creates a new image that is a copy of an existing one with the
  1020.      * pixels sharpened.
  1021.      *
  1022.      * @param raduis The radius of the gaussian, in pixels, not counting 
  1023.                      the center pixel
  1024.      * @param sigma The standard deviation of the gaussian, in pixels
  1025.      *
  1026.      * @return a sharpened image.
  1027.      * @exception MagickException on error
  1028.      */
  1029.     public native MagickImage sharpenImage(double raduis, double sigma)
  1030. throws MagickException;
  1031.     /**
  1032.      * Creates a new image that is a copy of an existing one with the
  1033.      * speckle noise minified. It uses the eight hull algorithm described
  1034.      * in Applied Optics, Vol. 24, No. 10, 15 May 1985, ``Geometric filter
  1035.      * for Speckle Reduction'', by Thomas R Crimmins. Each pixel in the
  1036.      * image is replaced by one of its eight of its surrounding pixels
  1037.      * using a polarity and negative hull function.
  1038.      *
  1039.      * @return a despeckled image
  1040.      * @exception MagickException on error
  1041.      */
  1042.     public native MagickImage despeckleImage()
  1043. throws MagickException;
  1044.     /**
  1045.      * Applies a general image convolution kernel to an image returns
  1046.      * the results. ConvolveImage allocates the memory necessary for
  1047.      * the new Image structure and returns a pointer to the new image.
  1048.      *
  1049.      * @param order The number of columns and rows in the filter kernel.
  1050.      * @param kernel An array of double representing the convolution kernel
  1051.      *
  1052.      * @return a convoled image
  1053.      * @exception MagickException on error
  1054.      */
  1055.     public native MagickImage convolveImage(int order, double[] kernel)
  1056. throws MagickException;
  1057.     /**
  1058.      * Searches the list of image attributes and returns
  1059.      *  the value of the attribute if it exists otherwise null.
  1060.      *
  1061.      * @param key the key of the attribute
  1062.      * @return the value of the attribute if exists, otherwise, null.
  1063.      * @exception MagickException on error
  1064.      */
  1065.     public native String getImageAttribute(String key)
  1066. throws MagickException;
  1067.     /**
  1068.      * Searches the list of image attributes and replaces the
  1069.      * attribute value.  If it is not found in the list, the attribute name
  1070.      * and value is added to the list. SetImageAttribute returns True if the
  1071.      * attribute is successfully replaced or added to the list, otherwise
  1072.      * False. If the value is null, the matching key is deleted from the list.
  1073.      *
  1074.      * @param key the key of the attribute
  1075.      * @param value the value of the attribute
  1076.      * @return true if the attribute is replace or false if added
  1077.      * @exception MagickException on error
  1078.      */
  1079.     public native boolean setImageAttribute(String key, String value)
  1080. throws MagickException;
  1081.     /**
  1082.      * Takes from memory an image in a known format and read it into
  1083.      * itself.
  1084.      *
  1085.      * @param imageInfo a ImageInfo instance
  1086.      * @param blob memory containing an image in a known format
  1087.      * @exception MagickException on error
  1088.      */
  1089.     public native void blobToImage(ImageInfo imageInfo, byte[] blob)
  1090. throws MagickException;
  1091.     /**
  1092.      * Returns an array that contents the image format.
  1093.      *
  1094.      * @param imageInfo the magick member of this object determines
  1095.      *                  output format
  1096.      * @return a byte array containing the image in the specified format
  1097.      * @exception MagickException on error
  1098.      */
  1099.     public native byte[] imageToBlob(ImageInfo imageInfo);
  1100.     /**
  1101.      * Set the units attribute of the image.
  1102.      *
  1103.      * @param units the resolution type as defined in ResolutionType
  1104.      * @see ResolutionType
  1105.      * @exception MagickException on error
  1106.      */
  1107.     public native void setUnits(int resolutionType)
  1108.       throws MagickException;
  1109.     /**
  1110.      * Get the units attribute of the image.
  1111.      *
  1112.      * @return A integer representing the resolution type as defined
  1113.      *         in ResolutionType
  1114.      * @see ResolutionType
  1115.      * @exception MagickException on error
  1116.      */
  1117.     public native int getUnits()
  1118.       throws MagickException;
  1119.     /**
  1120.      * Set the x_resolution attribute in the image.
  1121.      *
  1122.      * @param xRes x_resolution value
  1123.      * @exception MagickException on error
  1124.      */
  1125.     public native void setXResolution(double xRes)
  1126.         throws MagickException;
  1127.     /**
  1128.      * Get the x_resolution attribute in the image.
  1129.      *
  1130.      * @return x_resolution value
  1131.      * @exception MagickException on error
  1132.      */
  1133.     public native double getXResolution()
  1134.         throws MagickException;
  1135.     /**
  1136.      * Get the y_resolution attribute in the image.
  1137.      *
  1138.      * @param yRes y_resolution value
  1139.      * @exception MagickException on error
  1140.      */
  1141.     public native void setYResolution(double yRes)
  1142.         throws MagickException;
  1143.     /**
  1144.      * Get the y_resolution attribute in the image.
  1145.      *
  1146.      * @return y_resolution value
  1147.      * @exception MagickException on error
  1148.      */
  1149.     public native double getYResolution()
  1150.       throws MagickException;
  1151.     /**
  1152.      * Return image object for next image in sequence of frames.
  1153.      * Also sets the next image pointer to NULL.
  1154.      *
  1155.      * @return next image or null if end of list.
  1156.      * @exception MagickException on error 
  1157.      */
  1158.     protected native MagickImage nextImage()
  1159.         throws MagickException;
  1160.     /**
  1161.      * Check if the image has multiple frames.
  1162.      *
  1163.      * @return true if the image has multiple frames, false, otherwise.
  1164.      * @exception MagickException on error 
  1165.      */
  1166.     public native boolean hasFrames()
  1167.         throws MagickException;
  1168.     /*
  1169.      * Count the number of frames in image.
  1170.      *
  1171.      * @return number of frame in image
  1172.      * @exception MagickException on error 
  1173.      */
  1174.     public native int getNumFrames()
  1175.         throws MagickException;
  1176.     /**
  1177.      * Destructively create array of image frames. Contains this image
  1178.      * as the first object and frames in sequence.
  1179.      *
  1180.      * @return an array of image frame
  1181.      * @exception MagickException on error 
  1182.      */
  1183.     public MagickImage[] breakFrames()
  1184.         throws MagickException
  1185.     {
  1186.         int length = getNumFrames();
  1187.         MagickImage[] list = new MagickImage[length];
  1188.         MagickImage image = this;
  1189.         for (int i = 0; i < length && image != null; i++) {
  1190.             list[i] = image;
  1191.             image = image.nextImage();
  1192.         }
  1193.         return list;
  1194.     }
  1195.     /**
  1196.      * Set a new color profile for the image.
  1197.      * @param profile a new color profile. This parameter cannot be null.
  1198.      * @see #profileImage
  1199.      * @throws MagickException if an error occurs
  1200.      */
  1201.     public native void setColorProfile(ProfileInfo profile)
  1202.         throws MagickException;
  1203.     /**
  1204.      * Obtain the color profile from the image.
  1205.      * @return the color profile of the image
  1206.      * @see #profileImage
  1207.      * @throws MagickException if an error occurs
  1208.      */
  1209.     public native ProfileInfo getColorProfile()
  1210.         throws MagickException;
  1211.     /**
  1212.      * Set a new IPTC profile for the image.
  1213.      * @param profile a new IPTC profile. This parameter cannot be null.
  1214.      * @see #profileImage
  1215.      * @throws MagickException if an error occurs
  1216.      */
  1217.     public native void setIptcProfile(ProfileInfo profile)
  1218.         throws MagickException;
  1219.     /**
  1220.      * Obtain the IPTC profile from the image.
  1221.      * @return the IPTC profile of the image
  1222.      * @see #profileImage
  1223.      * @throws MagickException if an error occurs
  1224.      */
  1225.     public native ProfileInfo getIptcProfile()
  1226.         throws MagickException;
  1227.     /**
  1228.      * Return the number of generic profiles.
  1229.      * @return number of generic profiles
  1230.      * @throws MagickException if the profile count cannot be retrieved
  1231.      */
  1232.     public native int getGenericProfileCount()
  1233.         throws MagickException;
  1234.     /**
  1235.      * Return the generic profile specified by the index.
  1236.      * @param index the index of the generic profile to retrieve
  1237.      * @return a generic ProfileInfo if found, null otheriwse.
  1238.      * @throws MagickException if an error occurs
  1239.      */
  1240.     public native ProfileInfo getGenericProfile(int i)
  1241.         throws MagickException;
  1242.     /**
  1243.      * ProfileImage adds or removes a ICM, IPTC, or generic profile
  1244.      * from an image.  If the profile name is defined it is deleted
  1245.      * from the image. If a filename is given, one or more profiles
  1246.      * are read and added to the image.
  1247.      * @param profileName name of profile to add or remove
  1248.      * @param profile contents of the profile
  1249.      * @return Returns a true if the profile is successfully added or removed
  1250.      * @throws MagickException if an error occurs
  1251.      */
  1252.     public native boolean profileImage(String profileName, byte[] profileData)
  1253.         throws MagickException;
  1254.     /**
  1255.      * Create a montage of all the images in the list.
  1256.      * @param montageInfo parameter used in the creation of the montage
  1257.      * @return a montage of all images in the list
  1258.      * @throws MagickException if an error occurs
  1259.      */
  1260.     public native MagickImage montageImages(MontageInfo montageInfo)
  1261.         throws MagickException;
  1262.     /**
  1263.      * The Average() method takes a set of images and
  1264.      * averages them together. Each image in the set must 
  1265.      * have the same width and height.
  1266.      * @return an image with the pixel component of each image averaged.
  1267.      * @throws MagickException upon errors
  1268.      */
  1269.     public native MagickImage averageImages()
  1270.         throws MagickException;
  1271.     /**
  1272.      * Adjusts the levels of an image given these points:  black,
  1273.      * mid, and white.
  1274.      * @param level String representing the black, mid and white levels
  1275.      * @return true if successful, false otherwise.
  1276.      */
  1277.     public native boolean levelImage(String levels)
  1278.         throws MagickException;
  1279.     /**
  1280.      * Returns the current length of the image file or blob.
  1281.      * @return current length of the image file or blob
  1282.      */
  1283.     public native int sizeBlob()
  1284.         throws MagickException;
  1285.     /**
  1286.      * Set the compression attribute.
  1287.      * @param value a value from CompressionType
  1288.      * @see CompressionType
  1289.      * @exception MagickException on error
  1290.      */
  1291.     public native void setCompression(int value)
  1292.         throws MagickException;
  1293.    /**
  1294.      * Get the CompressionType of the image.
  1295.      * @return the compression as defined in CompressionType
  1296.      * @exception MagickException on error
  1297.      * @see CompressionType
  1298.      * @author Susan Dorr <sdorr@contentcube.com>
  1299.      */
  1300.     public native int getCompression()
  1301.         throws MagickException;
  1302.     /**
  1303.      * Get the image type from the MagickImage
  1304.      *
  1305.      * @param Image
  1306.      * @author Susan Dorr <sdorr@contentcube.com>
  1307.      */
  1308.     public native int getImageType()
  1309.         throws MagickException;
  1310.     /**
  1311.      * Set the border colour for the method borderImage.
  1312.      * @param color the border colour
  1313.      * @see #borderImage
  1314.      * @exception MagickException on error
  1315.      */
  1316.     public native void setBorderColor(PixelPacket color)
  1317.         throws MagickException;
  1318.     /**
  1319.      * Get the current border colour used by method borderImage.
  1320.      * @return the current border colour
  1321.      * @see #borderImage
  1322.      * @exception MagickException on error
  1323.      */
  1324.     public native PixelPacket getBorderColor()
  1325.         throws MagickException;
  1326.     /**
  1327.      * Set the background colour.
  1328.      * @param color the background colour
  1329.      * @exception MagickException on error
  1330.      */
  1331.     public native void setBackgroundColor(PixelPacket color)
  1332.         throws MagickException;
  1333.     /**
  1334.      * Get the current background colour.
  1335.      * @return the current background colour
  1336.      * @exception MagickException on error
  1337.      */
  1338.     public native PixelPacket getBackgroundColor()
  1339.         throws MagickException;
  1340.     /**
  1341.      * Set the time in 1/100ths of a second (0 to 65535) which must
  1342.      * expire before displaying the next image in an animated sequence.
  1343.      * This option is useful for regulating the animation of a sequence
  1344.      * of GIF images within Netscape.
  1345.      * @param delay the time delay in 1/100th of a second
  1346.      * @throws MagickException upon error
  1347.      */
  1348.     public native void setDelay(int delay)
  1349.         throws MagickException;
  1350.     /**
  1351.      * Get the time in 1/100ths of a second (0 to 65535) which must
  1352.      * expire before displaying the next image in an animated sequence.
  1353.      * This option is useful for regulating the animation of a sequence
  1354.      * of GIF images within Netscape.
  1355.      * @param the current time delay in 1/100th of a second
  1356.      * @throws MagickException upon error
  1357.      */
  1358.     public native int getDelay()
  1359.         throws MagickException;
  1360.     /**
  1361.      * Set the GIF disposal method. This option is used to control how
  1362.      * successive frames are rendered (how the preceding frame is disposed
  1363.      * of) when creating a GIF animation.
  1364.      * @param dispose the disposal method for GIF animation
  1365.      * @throws MagickException upon error
  1366.      */
  1367.     public native void setDispose(int dispose)
  1368.         throws MagickException;
  1369.     /**
  1370.      * Get the GIF disposal method. This option is used to control how
  1371.      * successive frames are rendered (how the preceding frame is disposed
  1372.      * of) when creating a GIF animation.
  1373.      * @return the current disposal method for GIF animation
  1374.      * @throws MagickException upon error
  1375.      */
  1376.     public native int getDispose()
  1377.         throws MagickException;
  1378.     /**
  1379.      * Set the number of iterations to loop an animation (e.g. Netscape
  1380.      * loop extension) for.
  1381.      * @param iterations the number of iterations
  1382.      * @throws MagickException upon error
  1383.      */
  1384.     public native void setIterations(int iterations)
  1385.         throws MagickException;
  1386.     /**
  1387.      * Get the number of iterations to loop an animation (e.g. Netscape
  1388.      * loop extension) for.
  1389.      * @return the current number of iterations
  1390.      * @throws MagickException upon error
  1391.      */
  1392.     public native int getIterations()
  1393.         throws MagickException;
  1394.     /**
  1395.      * The number of colors in the colourmap.
  1396.      * @return the current number of colors in the image
  1397.      * @see #quantizeImage
  1398.      * @throws MagickException upon error
  1399.      */
  1400.     public native int getColors()
  1401.         throws MagickException;
  1402.     /**
  1403.      * Get the The number of colors in the image after QuantizeImage(),
  1404.      * or QuantizeImages().
  1405.      * @return the current number of colors in the image
  1406.      * @throws MagickException upon error
  1407.      */
  1408.     public native int getTotalColors()
  1409.         throws MagickException;
  1410.     /**
  1411.      * Get the colour specified by the index.
  1412.      * @param index the index for which to return a colour
  1413.      * @return the colour of the index
  1414.      * @throws MagickException upon error
  1415.      */
  1416.     public native PixelPacket getColormap(int index)
  1417.         throws MagickException;
  1418.     /**
  1419.      * Get the entire colour map.
  1420.      * @return the colour map of the image
  1421.      * @throws MagickException upon error
  1422.      */
  1423.     public native PixelPacket[] getColormap()
  1424.         throws MagickException;
  1425.     /**
  1426.      * Get the colour at the specified row and column
  1427.      * @param x the x position of the pixel to fetch
  1428.      * @param y the y position of the pixel to fetch
  1429.      * @return the colour of the index
  1430.      * @throws MagickException upon error
  1431.      */
  1432.     public native PixelPacket getOnePixel(int x, int y)
  1433.         throws MagickException;
  1434.     /**
  1435.      * Determine signature of image and place signature
  1436.      * in the image's attributes.
  1437.      * @return true if successful, false, otherwise
  1438.      * @exception MagickException on error
  1439.      * @author Elizabeth Barham &lt;soggytrousers@yahoo.com&gt;
  1440.      */
  1441.     public native boolean signatureImage()
  1442.         throws MagickException;
  1443.     
  1444.     /**
  1445.      * @return the quality the image was saved
  1446.      * @throws MagickException on error
  1447.      */
  1448.     public native int getQuality()
  1449.         throws MagickException;
  1450. }