Class AutoDetectColorType


  • public class AutoDetectColorType
    extends Operation
    Detects the minimum (in terms of memory) color type of an image. Can convert the original image to that new input type on demand.

    Input parameters: image to be examined, boolean that specifies whether conversion will be performed (default is true, conversion is performed). Output parameters: converted image, boolean that expresses whether a conversion was possible.

    Supported types for input image: RGB24Image, Gray8Image, Paletted8Image.

    BilevelImage is not supported because there is no smaller image type, so bilevel images cannot be reduced.

    This operation is not a ImageToImageOperation because this class need not necessarily produce a new image (with setConversion(boolean)(false)).

    Usage example

    This code snippet loads an image and attempts to reduce it to the minimum color type that will hold it.
     PixelImage image = ImageLoader.load("test.bmp");
     AutoDetectColorType op = new AutoDetectColorType();
     op.setInputImage(image);
     op.process();
     if (op.isReducible())
     {
       image = op.getOutputImage();
     }
     
    Author:
    Marco Schmidt
    • Constructor Detail

      • AutoDetectColorType

        public AutoDetectColorType()
    • Method Detail

      • createBilevelFromGrayOrRgb

        private void createBilevelFromGrayOrRgb​(IntegerImage in)
        Creates a bilevel image from any grayscale (or RGB) image that has been checked to be bilevel.
      • createBilevelFromPaletted

        private void createBilevelFromPaletted​(Paletted8Image in)
      • createGray8FromGray16

        private void createGray8FromGray16​(Gray16Image in)
      • createPaletted8FromRgb24

        private void createPaletted8FromRgb24​(RGB24Image in)
      • createPaletted8FromRgb48

        private void createPaletted8FromRgb48​(RGB48Image in)
      • getOutputImage

        public PixelImage getOutputImage()
        Returns the reduced output image if one was created in process().
        Returns:
        newly-created output image
      • getType

        public int getType()
        Returns the type of the minimum image type found (one of the TYPE_xyz constants of this class). Can only be called after a successful call to process.
      • isReducible

        public boolean isReducible()
        This method can be called after process() to find out if the input image in fact can be reduced to a "smaller" image type. If this method returns true and if conversion was desired by the user (can be specified via setConversion(boolean)), the reduced image can be retrieved via getOutputImage().
        Returns:
        if image was found to be reducible in process()
      • isGrayBilevel

        private boolean isGrayBilevel​(IntegerImage in)
      • isGray16Gray8

        private boolean isGray16Gray8​(Gray16Image in)
      • isRgb48Gray8

        private boolean isRgb48Gray8​(RGB48Image in)
      • isRgb48Paletted8

        private boolean isRgb48Paletted8​(RGB48Image in)
        Assumes that it has already been verified that the input 48 bpp RGB image is also a 24 bpp RGB image.
        Parameters:
        in - input image to be checked
        Returns:
        if this image can be losslessly converted to a Paletted8Image
      • isRgb48Rgb24

        private boolean isRgb48Rgb24​(RGB48Image in)
      • isRgbBilevel

        private boolean isRgbBilevel​(IntegerImage in)
      • isRgbGray

        private boolean isRgbGray​(RGBIntegerImage in)
        Returns if the input RGB image can be losslessly converted to a grayscale image.
        Parameters:
        in - RGB image to be checked
        Returns:
        true if input is gray, false otherwise
      • isRgb24Paletted8

        private boolean isRgb24Paletted8​(RGB24Image in)
      • setConversion

        public void setConversion​(boolean convert)
        This method can be used to specify whether the input image is to be converted to the minimum image type if it is clear that such a conversion is possible. The default value is true. If this is set to false, it can still be
        Parameters:
        convert - if true, the conversion will be performed
      • setInputImage

        public void setInputImage​(PixelImage image)
        This method must be used to specify the mandatory input image.
        Parameters:
        image - PixelImage object to be examined