Class BMPImageWriter

  • All Implemented Interfaces:
    BMPConstants, javax.imageio.ImageTranscoder

    public class BMPImageWriter
    extends javax.imageio.ImageWriter
    implements BMPConstants
    The Java Image IO plugin writer for encoding a binary RenderedImage into a BMP format. The encoding process may clip, subsample using the parameters specified in the ImageWriteParam.
    See Also:
    BMPImageWriteParam
    • Constructor Summary

      Constructors 
      Constructor Description
      BMPImageWriter​(javax.imageio.spi.ImageWriterSpi originator)
      Constructs BMPImageWriter based on the provided ImageWriterSpi.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected boolean canEncodeImage​(int compression, java.awt.image.ColorModel cm, java.awt.image.SampleModel sm)  
      protected boolean canEncodeImage​(int compression, javax.imageio.ImageTypeSpecifier imgType)  
      boolean canWriteRasters()  
      javax.imageio.metadata.IIOMetadata convertImageMetadata​(javax.imageio.metadata.IIOMetadata inData, javax.imageio.ImageTypeSpecifier imageType, javax.imageio.ImageWriteParam param)  
      javax.imageio.metadata.IIOMetadata convertStreamMetadata​(javax.imageio.metadata.IIOMetadata inData, javax.imageio.ImageWriteParam param)  
      private void encodeRLE4​(byte[] bipixels, int scanlineBytes)  
      private void encodeRLE8​(byte[] bpixels, int scanlineBytes)  
      private int firstLowBit​(int num)  
      (package private) static int getCompressionType​(java.lang.String typeString)  
      javax.imageio.metadata.IIOMetadata getDefaultImageMetadata​(javax.imageio.ImageTypeSpecifier imageType, javax.imageio.ImageWriteParam param)  
      javax.imageio.metadata.IIOMetadata getDefaultStreamMetadata​(javax.imageio.ImageWriteParam param)  
      javax.imageio.ImageWriteParam getDefaultWriteParam()  
      (package private) static int getPreferredCompressionType​(java.awt.image.ColorModel cm, java.awt.image.SampleModel sm)  
      (package private) static int getPreferredCompressionType​(javax.imageio.ImageTypeSpecifier imageType)  
      private void incCompImageSize​(int value)  
      private boolean isEven​(int number)  
      void reset()  
      private int roundBpp​(int x)  
      void setOutput​(java.lang.Object output)  
      void write​(javax.imageio.metadata.IIOMetadata streamMetadata, javax.imageio.IIOImage image, javax.imageio.ImageWriteParam param)  
      private void writeEmbedded​(javax.imageio.IIOImage image, javax.imageio.ImageWriteParam bmpParam)  
      private void writeFileHeader​(int fileSize, int offset)  
      private void writeInfoHeader​(int headerSize, int bitsPerPixel)  
      protected void writeMaskToPalette​(int mask, int i, byte[] r, byte[] g, byte[] b, byte[] a)  
      private void writePixels​(int l, int scanlineBytes, int bitsPerPixel, int[] pixels, int padding, int numBands, java.awt.image.IndexColorModel icm)  
      private void writeSize​(int dword, int offset)  
      • Methods inherited from class javax.imageio.ImageWriter

        abort, abortRequested, addIIOWriteProgressListener, addIIOWriteWarningListener, canInsertEmpty, canInsertImage, canRemoveImage, canReplaceImageMetadata, canReplacePixels, canReplaceStreamMetadata, canWriteEmpty, canWriteSequence, clearAbortRequest, dispose, endInsertEmpty, endReplacePixels, endWriteEmpty, endWriteSequence, getAvailableLocales, getLocale, getNumThumbnailsSupported, getOriginatingProvider, getOutput, getPreferredThumbnailSizes, prepareInsertEmpty, prepareReplacePixels, prepareWriteEmpty, prepareWriteSequence, processImageComplete, processImageProgress, processImageStarted, processThumbnailComplete, processThumbnailProgress, processThumbnailStarted, processWarningOccurred, processWarningOccurred, processWriteAborted, removeAllIIOWriteProgressListeners, removeAllIIOWriteWarningListeners, removeIIOWriteProgressListener, removeIIOWriteWarningListener, removeImage, replaceImageMetadata, replacePixels, replacePixels, replaceStreamMetadata, setLocale, write, write, writeInsert, writeToSequence
      • Methods inherited from class java.lang.Object

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

      • stream

        private javax.imageio.stream.ImageOutputStream stream
        The output stream to write into
      • embedded_stream

        private java.io.ByteArrayOutputStream embedded_stream
      • compressionType

        private int compressionType
      • isTopDown

        private boolean isTopDown
      • w

        private int w
      • h

        private int h
      • compImageSize

        private int compImageSize
      • bitMasks

        private int[] bitMasks
      • bitPos

        private int[] bitPos
      • bpixels

        private byte[] bpixels
      • spixels

        private short[] spixels
      • ipixels

        private int[] ipixels
    • Constructor Detail

      • BMPImageWriter

        public BMPImageWriter​(javax.imageio.spi.ImageWriterSpi originator)
        Constructs BMPImageWriter based on the provided ImageWriterSpi.
    • Method Detail

      • setOutput

        public void setOutput​(java.lang.Object output)
        Overrides:
        setOutput in class javax.imageio.ImageWriter
      • getDefaultWriteParam

        public javax.imageio.ImageWriteParam getDefaultWriteParam()
        Overrides:
        getDefaultWriteParam in class javax.imageio.ImageWriter
      • getDefaultStreamMetadata

        public javax.imageio.metadata.IIOMetadata getDefaultStreamMetadata​(javax.imageio.ImageWriteParam param)
        Specified by:
        getDefaultStreamMetadata in class javax.imageio.ImageWriter
      • getDefaultImageMetadata

        public javax.imageio.metadata.IIOMetadata getDefaultImageMetadata​(javax.imageio.ImageTypeSpecifier imageType,
                                                                          javax.imageio.ImageWriteParam param)
        Specified by:
        getDefaultImageMetadata in class javax.imageio.ImageWriter
      • convertStreamMetadata

        public javax.imageio.metadata.IIOMetadata convertStreamMetadata​(javax.imageio.metadata.IIOMetadata inData,
                                                                        javax.imageio.ImageWriteParam param)
        Specified by:
        convertStreamMetadata in interface javax.imageio.ImageTranscoder
        Specified by:
        convertStreamMetadata in class javax.imageio.ImageWriter
      • convertImageMetadata

        public javax.imageio.metadata.IIOMetadata convertImageMetadata​(javax.imageio.metadata.IIOMetadata inData,
                                                                       javax.imageio.ImageTypeSpecifier imageType,
                                                                       javax.imageio.ImageWriteParam param)
        Specified by:
        convertImageMetadata in interface javax.imageio.ImageTranscoder
        Specified by:
        convertImageMetadata in class javax.imageio.ImageWriter
      • canWriteRasters

        public boolean canWriteRasters()
        Overrides:
        canWriteRasters in class javax.imageio.ImageWriter
      • write

        public void write​(javax.imageio.metadata.IIOMetadata streamMetadata,
                          javax.imageio.IIOImage image,
                          javax.imageio.ImageWriteParam param)
                   throws java.io.IOException
        Specified by:
        write in class javax.imageio.ImageWriter
        Throws:
        java.io.IOException
      • writePixels

        private void writePixels​(int l,
                                 int scanlineBytes,
                                 int bitsPerPixel,
                                 int[] pixels,
                                 int padding,
                                 int numBands,
                                 java.awt.image.IndexColorModel icm)
                          throws java.io.IOException
        Throws:
        java.io.IOException
      • encodeRLE8

        private void encodeRLE8​(byte[] bpixels,
                                int scanlineBytes)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • encodeRLE4

        private void encodeRLE4​(byte[] bipixels,
                                int scanlineBytes)
                         throws java.io.IOException
        Throws:
        java.io.IOException
      • incCompImageSize

        private void incCompImageSize​(int value)
      • isEven

        private boolean isEven​(int number)
      • writeFileHeader

        private void writeFileHeader​(int fileSize,
                                     int offset)
                              throws java.io.IOException
        Throws:
        java.io.IOException
      • writeInfoHeader

        private void writeInfoHeader​(int headerSize,
                                     int bitsPerPixel)
                              throws java.io.IOException
        Throws:
        java.io.IOException
      • writeSize

        private void writeSize​(int dword,
                               int offset)
                        throws java.io.IOException
        Throws:
        java.io.IOException
      • reset

        public void reset()
        Overrides:
        reset in class javax.imageio.ImageWriter
      • getCompressionType

        static int getCompressionType​(java.lang.String typeString)
      • writeEmbedded

        private void writeEmbedded​(javax.imageio.IIOImage image,
                                   javax.imageio.ImageWriteParam bmpParam)
                            throws java.io.IOException
        Throws:
        java.io.IOException
      • firstLowBit

        private int firstLowBit​(int num)
      • getPreferredCompressionType

        static int getPreferredCompressionType​(java.awt.image.ColorModel cm,
                                               java.awt.image.SampleModel sm)
      • getPreferredCompressionType

        static int getPreferredCompressionType​(javax.imageio.ImageTypeSpecifier imageType)
      • canEncodeImage

        protected boolean canEncodeImage​(int compression,
                                         java.awt.image.ColorModel cm,
                                         java.awt.image.SampleModel sm)
      • canEncodeImage

        protected boolean canEncodeImage​(int compression,
                                         javax.imageio.ImageTypeSpecifier imgType)
      • writeMaskToPalette

        protected void writeMaskToPalette​(int mask,
                                          int i,
                                          byte[] r,
                                          byte[] g,
                                          byte[] b,
                                          byte[] a)
      • roundBpp

        private int roundBpp​(int x)