Class GIFImageWriter
java.lang.Object
javax.imageio.ImageWriter
com.github.jaiimageio.impl.plugins.gif.GIFImageWriter
- All Implemented Interfaces:
ImageTranscoder
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final boolean
(package private) static final String
private int
The index of the image being written.private boolean
Whether a sequence is being written.(package private) static final String
private ImageOutputStream
Theoutput
case to anImageOutputStream
.(package private) static final String
private GIFWritableStreamMetadata
The stream metadata of a sequence.private boolean
Whether the header has been written.Fields inherited from class javax.imageio.ImageWriter
availableLocales, locale, originatingProvider, output, progressListeners, warningListeners, warningLocales
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
private static void
computeRegions
(Rectangle sourceBounds, Dimension destSize, ImageWriteParam p) Compute the source region and destination dimensions taking any parameter settings into account.convertImageMetadata
(IIOMetadata inData, ImageTypeSpecifier imageType, ImageWriteParam param) Creates a default image metadata object and merges in the supplied metadata.private void
convertMetadata
(String metadataFormatName, IIOMetadata inData, IIOMetadata outData) MergesinData
intooutData
.convertStreamMetadata
(IIOMetadata inData, ImageWriteParam param) Creates a default stream metadata object and merges in the supplied metadata.private static byte[]
createColorTable
(ColorModel colorModel, SampleModel sampleModel) Create a color table from the image ColorModel and SampleModel.void
getDefaultImageMetadata
(ImageTypeSpecifier imageType, ImageWriteParam param) private static int
getGifPaletteSize
(int x) According do GIF specification size of clor table (palette here) must be in range from 2 to 256 and must be power of 2.private static int
getNumBits
(int value) The number of bits represented by the value which should be a legal length for a color table.private boolean
needToCreateIndex
(RenderedImage image) void
prepareWriteSequence
(IIOMetadata streamMetadata) void
reset()
private void
Resets locally defined instance variables.void
private void
write
(boolean writeHeader, boolean writeTrailer, IIOMetadata sm, IIOImage iioimage, ImageWriteParam p) Writes any extension blocks, the Image Descriptor, the image data, and optionally the header (Signature and Logical Screen Descriptor) and trailer (Block Terminator).void
write
(IIOMetadata sm, IIOImage iioimage, ImageWriteParam p) private void
private void
writeBlocks
(byte[] data) private void
private void
writeGraphicControlExtension
(int disposalMethod, boolean userInputFlag, boolean transparentColorFlag, int delayTime, int transparentColorIndex) private void
private void
writeHeader
(String version, int logicalScreenWidth, int logicalScreenHeight, int colorResolution, int pixelAspectRatio, int backgroundColorIndex, boolean sortFlag, int bitsPerPixel, byte[] globalColorTable) private void
writeHeader
(IIOMetadata streamMetadata, int bitsPerPixel) private void
writeImage
(RenderedImage image, GIFWritableImageMetadata imageMetadata, ImageWriteParam param, byte[] globalColorTable, Rectangle sourceBounds, Dimension destSize) Writes any extension blocks, the Image Descriptor, and the image dataprivate void
writeImageDescriptor
(int imageLeftPosition, int imageTopPosition, int imageWidth, int imageHeight, boolean interlaceFlag, boolean sortFlag, int bitsPerPixel, byte[] localColorTable) private void
writeImageDescriptor
(GIFWritableImageMetadata imageMetadata, int bitsPerPixel) private void
private void
writeRasterData
(RenderedImage image, Rectangle sourceBounds, Dimension destSize, ImageWriteParam param, boolean interlaceFlag) private void
writeRows
(RenderedImage image, LZWCompressor compressor, int sx, int sdx, int sy, int sdy, int sw, int dy, int ddy, int dw, int dh, int numRowsWritten, int progressReportRowPeriod) private void
writeRowsOpt
(byte[] data, int offset, int lineStride, LZWCompressor compressor, int dy, int ddy, int dw, int dh, int numRowsWritten, int progressReportRowPeriod) void
writeToSequence
(IIOImage image, ImageWriteParam param) private void
Methods inherited from class javax.imageio.ImageWriter
abort, abortRequested, addIIOWriteProgressListener, addIIOWriteWarningListener, canInsertEmpty, canInsertImage, canRemoveImage, canReplaceImageMetadata, canReplacePixels, canReplaceStreamMetadata, canWriteEmpty, canWriteRasters, clearAbortRequest, dispose, endInsertEmpty, endReplacePixels, endWriteEmpty, getAvailableLocales, getLocale, getNumThumbnailsSupported, getOriginatingProvider, getOutput, getPreferredThumbnailSizes, prepareInsertEmpty, prepareReplacePixels, prepareWriteEmpty, processImageComplete, processImageProgress, processImageStarted, processThumbnailComplete, processThumbnailProgress, processThumbnailStarted, processWarningOccurred, processWarningOccurred, processWriteAborted, removeAllIIOWriteProgressListeners, removeAllIIOWriteWarningListeners, removeIIOWriteProgressListener, removeIIOWriteWarningListener, removeImage, replaceImageMetadata, replacePixels, replacePixels, replaceStreamMetadata, setLocale, write, write, writeInsert
-
Field Details
-
DEBUG
private static final boolean DEBUG- See Also:
-
STANDARD_METADATA_NAME
- See Also:
-
STREAM_METADATA_NAME
- See Also:
-
IMAGE_METADATA_NAME
- See Also:
-
stream
Theoutput
case to anImageOutputStream
. -
isWritingSequence
private boolean isWritingSequenceWhether a sequence is being written. -
wroteSequenceHeader
private boolean wroteSequenceHeaderWhether the header has been written. -
theStreamMetadata
The stream metadata of a sequence. -
imageIndex
private int imageIndexThe index of the image being written.
-
-
Constructor Details
-
GIFImageWriter
-
-
Method Details
-
getNumBits
The number of bits represented by the value which should be a legal length for a color table.- Throws:
IOException
-
computeRegions
Compute the source region and destination dimensions taking any parameter settings into account. -
createColorTable
Create a color table from the image ColorModel and SampleModel. -
getGifPaletteSize
private static int getGifPaletteSize(int x) According do GIF specification size of clor table (palette here) must be in range from 2 to 256 and must be power of 2. -
canWriteSequence
public boolean canWriteSequence()- Overrides:
canWriteSequence
in classImageWriter
-
convertMetadata
MergesinData
intooutData
. The supplied metadata format name is attempted first and failing that the standard metadata format name is attempted. -
convertStreamMetadata
Creates a default stream metadata object and merges in the supplied metadata.- Specified by:
convertStreamMetadata
in interfaceImageTranscoder
- Specified by:
convertStreamMetadata
in classImageWriter
-
convertImageMetadata
public IIOMetadata convertImageMetadata(IIOMetadata inData, ImageTypeSpecifier imageType, ImageWriteParam param) Creates a default image metadata object and merges in the supplied metadata.- Specified by:
convertImageMetadata
in interfaceImageTranscoder
- Specified by:
convertImageMetadata
in classImageWriter
-
endWriteSequence
- Overrides:
endWriteSequence
in classImageWriter
- Throws:
IOException
-
getDefaultImageMetadata
- Specified by:
getDefaultImageMetadata
in classImageWriter
-
getDefaultStreamMetadata
- Specified by:
getDefaultStreamMetadata
in classImageWriter
-
getDefaultWriteParam
- Overrides:
getDefaultWriteParam
in classImageWriter
-
prepareWriteSequence
- Overrides:
prepareWriteSequence
in classImageWriter
- Throws:
IOException
-
reset
public void reset()- Overrides:
reset
in classImageWriter
-
resetLocal
private void resetLocal()Resets locally defined instance variables. -
setOutput
- Overrides:
setOutput
in classImageWriter
-
write
- Specified by:
write
in classImageWriter
- Throws:
IOException
-
writeToSequence
- Overrides:
writeToSequence
in classImageWriter
- Throws:
IOException
-
needToCreateIndex
-
write
private void write(boolean writeHeader, boolean writeTrailer, IIOMetadata sm, IIOImage iioimage, ImageWriteParam p) throws IOException Writes any extension blocks, the Image Descriptor, the image data, and optionally the header (Signature and Logical Screen Descriptor) and trailer (Block Terminator).- Parameters:
writeHeader
- Whether to write the header.writeTrailer
- Whether to write the trailer.sm
- The stream metadata ornull
ifwriteHeader
isfalse
.iioimage
- The image and image metadata.p
- The write parameters.- Throws:
IllegalArgumentException
- if the number of bands is not 1.IllegalArgumentException
- if the number of bits per sample is greater than 8.IllegalArgumentException
- if the color component size is greater than 8.IllegalArgumentException
- ifwriteHeader
istrue
andsm
isnull
.IllegalArgumentException
- ifwriteHeader
isfalse
and a sequence is not being written.IOException
-
writeImage
private void writeImage(RenderedImage image, GIFWritableImageMetadata imageMetadata, ImageWriteParam param, byte[] globalColorTable, Rectangle sourceBounds, Dimension destSize) throws IOException Writes any extension blocks, the Image Descriptor, and the image data- Parameters:
image
- The image.imageMetadata
- The Image metadata.param
- The write parameters.globalColorTable
- The Global Color Table.sourceBounds
- The source region.destSize
- The destination dimensions.- Throws:
IOException
-
writeRows
private void writeRows(RenderedImage image, LZWCompressor compressor, int sx, int sdx, int sy, int sdy, int sw, int dy, int ddy, int dw, int dh, int numRowsWritten, int progressReportRowPeriod) throws IOException - Throws:
IOException
-
writeRowsOpt
private void writeRowsOpt(byte[] data, int offset, int lineStride, LZWCompressor compressor, int dy, int ddy, int dw, int dh, int numRowsWritten, int progressReportRowPeriod) throws IOException - Throws:
IOException
-
writeRasterData
private void writeRasterData(RenderedImage image, Rectangle sourceBounds, Dimension destSize, ImageWriteParam param, boolean interlaceFlag) throws IOException - Throws:
IOException
-
writeHeader
private void writeHeader(String version, int logicalScreenWidth, int logicalScreenHeight, int colorResolution, int pixelAspectRatio, int backgroundColorIndex, boolean sortFlag, int bitsPerPixel, byte[] globalColorTable) throws IOException - Throws:
IOException
-
writeHeader
- Throws:
IOException
-
writeGraphicControlExtension
private void writeGraphicControlExtension(int disposalMethod, boolean userInputFlag, boolean transparentColorFlag, int delayTime, int transparentColorIndex) throws IOException - Throws:
IOException
-
writeGraphicControlExtension
- Throws:
IOException
-
writeBlocks
- Throws:
IOException
-
writePlainTextExtension
- Throws:
IOException
-
writeApplicationExtension
- Throws:
IOException
-
writeCommentExtension
- Throws:
IOException
-
writeImageDescriptor
private void writeImageDescriptor(int imageLeftPosition, int imageTopPosition, int imageWidth, int imageHeight, boolean interlaceFlag, boolean sortFlag, int bitsPerPixel, byte[] localColorTable) throws IOException - Throws:
IOException
-
writeImageDescriptor
private void writeImageDescriptor(GIFWritableImageMetadata imageMetadata, int bitsPerPixel) throws IOException - Throws:
IOException
-
writeTrailer
- Throws:
IOException
-