Class BMPImageWriteParam


  • public class BMPImageWriteParam
    extends javax.imageio.ImageWriteParam
    A subclass of ImageWriteParam for encoding images in the BMP format.

    This class allows for the specification of various parameters while writing a BMP format image file. By default, the data layout is bottom-up, such that the pixels are stored in bottom-up order, the first scanline being stored last.

    The particular compression scheme to be used can be specified by using the setCompressionType() method with the appropriate type string. The compression scheme specified will be honored if and only if it is compatible with the type of image being written. If the specified compression scheme is not compatible with the type of image being written then the IOException will be thrown by the BMP image writer. If the compression type is not set explicitly then getCompressionType() will return null. In this case the BMP image writer will select a compression type that supports encoding of the given image without loss of the color resolution.

    The compression type strings and the image type(s) each supports are listed in the following table:

    Compression Types
    Type String Description Image Types
    BI_RGB Uncompressed RLE <= 8-bits/sample
    BI_RLE8 8-bit Run Length Encoding <= 8-bits/sample
    BI_RLE4 4-bit Run Length Encoding <= 4-bits/sample
    BI_BITFIELDS Packed data 16 or 32 bits/sample
    BI_JPEG JPEG encoded grayscale or RGB image

    When BI_BITFIELDS is used, if the image encoded has a DirectColorModel, the bit mask in the color model will be written into the stream. Otherwise, only 5-5-5 16-bit image or 8-8-8 32-bit images are supported.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private boolean topDown  
      static int VERSION_2
      Deprecated. 
      static int VERSION_3
      Deprecated. 
      static int VERSION_4
      Deprecated. 
      static int VERSION_5
      Deprecated. 
      • Fields inherited from class javax.imageio.ImageWriteParam

        canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, compressionMode, compressionQuality, compressionType, compressionTypes, locale, MODE_COPY_FROM_METADATA, MODE_DEFAULT, MODE_DISABLED, MODE_EXPLICIT, preferredTileSizes, progressiveMode, tileGridXOffset, tileGridYOffset, tileHeight, tileWidth, tilingMode, tilingSet
      • Fields inherited from class javax.imageio.IIOParam

        controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
    • Constructor Summary

      Constructors 
      Constructor Description
      BMPImageWriteParam()
      Constructs an BMPImageWriteParam object with default values for all parameters and a null Locale.
      BMPImageWriteParam​(java.util.Locale locale)
      Constructs a BMPImageWriteParam set to use a given Locale and with default values for all parameters.
    • Method Summary

      All Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      int getVersion()
      Deprecated. 
      boolean isTopDown()
      Returns the value of the topDown parameter.
      void setCompressionType​(java.lang.String compressionType)
      Sets the compression type to one of the values indicated by getCompressionTypes.
      void setTopDown​(boolean topDown)
      If set, the data will be written out in a top-down manner, the first scanline being written first.
      • Methods inherited from class javax.imageio.ImageWriteParam

        canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, getBitRate, getCompressionMode, getCompressionQuality, getCompressionQualityDescriptions, getCompressionQualityValues, getCompressionType, getCompressionTypes, getLocale, getLocalizedCompressionTypeName, getPreferredTileSizes, getProgressiveMode, getTileGridXOffset, getTileGridYOffset, getTileHeight, getTileWidth, getTilingMode, isCompressionLossless, setCompressionMode, setCompressionQuality, setProgressiveMode, setTiling, setTilingMode, unsetCompression, unsetTiling
      • Methods inherited from class javax.imageio.IIOParam

        activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • VERSION_2

        public static final int VERSION_2
        Deprecated.
        Constant for BMP version 2.
        See Also:
        Constant Field Values
      • VERSION_3

        public static final int VERSION_3
        Deprecated.
        Constant for BMP version 3.
        See Also:
        Constant Field Values
      • VERSION_4

        public static final int VERSION_4
        Deprecated.
        Constant for BMP version 4.
        See Also:
        Constant Field Values
      • VERSION_5

        public static final int VERSION_5
        Deprecated.
        Constant for BMP version 5.
        See Also:
        Constant Field Values
      • topDown

        private boolean topDown
    • Constructor Detail

      • BMPImageWriteParam

        public BMPImageWriteParam​(java.util.Locale locale)
        Constructs a BMPImageWriteParam set to use a given Locale and with default values for all parameters.
        Parameters:
        locale - a Locale to be used to localize compression type names and quality descriptions, or null.
      • BMPImageWriteParam

        public BMPImageWriteParam()
        Constructs an BMPImageWriteParam object with default values for all parameters and a null Locale.
    • Method Detail

      • getVersion

        public int getVersion()
        Deprecated.
        Returns the BMP version to be used. The default is VERSION_3.
        Returns:
        the BMP version number.
      • setTopDown

        public void setTopDown​(boolean topDown)
        If set, the data will be written out in a top-down manner, the first scanline being written first. Any compression other than BI_RGB or BI_BITFIELDS is incompatible with the data being written in top-down order. Setting the topDown argument to true will be honored only when the compression type at the time of writing the image is one of the two mentioned above. Otherwise, the topDown setting will be ignored.
        Parameters:
        topDown - whether the data are written in top-down order.
      • isTopDown

        public boolean isTopDown()
        Returns the value of the topDown parameter. The default is false.
        Returns:
        whether the data are written in top-down order.
      • setCompressionType

        public void setCompressionType​(java.lang.String compressionType)
        Sets the compression type to one of the values indicated by getCompressionTypes. If a value of null is passed in, any previous setting is removed.

        The method first invokes {@link javax.imageio.ImageWriteParam.#setCompressionType(String) setCompressionType()} with the supplied value of compressionType. Next, if isTopDown() returns true and the value of compressionType is incompatible with top-down order, setTopDown(boolean) is invoked with parameter topDown set to false. The image will then be written in bottom-up order with the specified compressionType.

        Overrides:
        setCompressionType in class javax.imageio.ImageWriteParam
        Parameters:
        compressionType - one of the Strings returned by getCompressionTypes, or null to remove any previous setting.
        Throws:
        java.lang.UnsupportedOperationException - if the writer does not support compression.
        java.lang.IllegalStateException - if the compression mode is not MODE_EXPLICIT.
        java.lang.UnsupportedOperationException - if there are no settable compression types.
        java.lang.IllegalArgumentException - if compressionType is non-null but is not one of the values returned by getCompressionTypes.
        See Also:
        isTopDown(), setTopDown(boolean), ImageWriteParam.getCompressionTypes(), ImageWriteParam.getCompressionType(), ImageWriteParam.unsetCompression()