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 Stringprivate intThe index of the image being written.private booleanWhether a sequence is being written.(package private) static final Stringprivate ImageOutputStreamTheoutputcase to anImageOutputStream.(package private) static final Stringprivate GIFWritableStreamMetadataThe stream metadata of a sequence.private booleanWhether the header has been written.Fields inherited from class ImageWriter
availableLocales, locale, originatingProvider, output, progressListeners, warningListeners, warningLocales -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanprivate static voidcomputeRegions(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 voidconvertMetadata(String metadataFormatName, IIOMetadata inData, IIOMetadata outData) MergesinDataintooutData.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.voidgetDefaultImageMetadata(ImageTypeSpecifier imageType, ImageWriteParam param) private static intgetGifPaletteSize(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 intgetNumBits(int value) The number of bits represented by the value which should be a legal length for a color table.private booleanneedToCreateIndex(RenderedImage image) voidprepareWriteSequence(IIOMetadata streamMetadata) voidreset()private voidResets locally defined instance variables.voidprivate voidwrite(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).voidwrite(IIOMetadata sm, IIOImage iioimage, ImageWriteParam p) private voidprivate voidwriteBlocks(byte[] data) private voidprivate voidwriteGraphicControlExtension(int disposalMethod, boolean userInputFlag, boolean transparentColorFlag, int delayTime, int transparentColorIndex) private voidprivate voidwriteHeader(String version, int logicalScreenWidth, int logicalScreenHeight, int colorResolution, int pixelAspectRatio, int backgroundColorIndex, boolean sortFlag, int bitsPerPixel, byte[] globalColorTable) private voidwriteHeader(IIOMetadata streamMetadata, int bitsPerPixel) private voidwriteImage(RenderedImage image, GIFWritableImageMetadata imageMetadata, ImageWriteParam param, byte[] globalColorTable, Rectangle sourceBounds, Dimension destSize) Writes any extension blocks, the Image Descriptor, and the image dataprivate voidwriteImageDescriptor(int imageLeftPosition, int imageTopPosition, int imageWidth, int imageHeight, boolean interlaceFlag, boolean sortFlag, int bitsPerPixel, byte[] localColorTable) private voidwriteImageDescriptor(GIFWritableImageMetadata imageMetadata, int bitsPerPixel) private voidprivate voidwriteRasterData(RenderedImage image, Rectangle sourceBounds, Dimension destSize, ImageWriteParam param, boolean interlaceFlag) private voidwriteRows(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 voidwriteRowsOpt(byte[] data, int offset, int lineStride, LZWCompressor compressor, int dy, int ddy, int dw, int dh, int numRowsWritten, int progressReportRowPeriod) voidwriteToSequence(IIOImage image, ImageWriteParam param) private voidMethods inherited from class 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
Theoutputcase 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:
canWriteSequencein classImageWriter
-
convertMetadata
MergesinDataintooutData. 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:
convertStreamMetadatain interfaceImageTranscoder- Specified by:
convertStreamMetadatain 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:
convertImageMetadatain interfaceImageTranscoder- Specified by:
convertImageMetadatain classImageWriter
-
endWriteSequence
- Overrides:
endWriteSequencein classImageWriter- Throws:
IOException
-
getDefaultImageMetadata
- Specified by:
getDefaultImageMetadatain classImageWriter
-
getDefaultStreamMetadata
- Specified by:
getDefaultStreamMetadatain classImageWriter
-
getDefaultWriteParam
- Overrides:
getDefaultWriteParamin classImageWriter
-
prepareWriteSequence
- Overrides:
prepareWriteSequencein classImageWriter- Throws:
IOException
-
reset
public void reset()- Overrides:
resetin classImageWriter
-
resetLocal
private void resetLocal()Resets locally defined instance variables. -
setOutput
- Overrides:
setOutputin classImageWriter
-
write
- Specified by:
writein classImageWriter- Throws:
IOException
-
writeToSequence
- Overrides:
writeToSequencein 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 ornullifwriteHeaderisfalse.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- ifwriteHeaderistrueandsmisnull.IllegalArgumentException- ifwriteHeaderisfalseand 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
-