Class TIFFImageWriter
- java.lang.Object
-
- javax.imageio.ImageWriter
-
- com.github.jaiimageio.impl.plugins.tiff.TIFFImageWriter
-
- All Implemented Interfaces:
javax.imageio.ImageTranscoder
public class TIFFImageWriter extends javax.imageio.ImageWriter
-
-
Field Summary
Fields Modifier and Type Field Description (package private) intbitDepth(package private) char[]bitsPerSample(package private) java.nio.ByteOrderbyteOrder(package private) TIFFColorConvertercolorConverter(package private) intcompressionstatic int[]compressionNumbersCompression tag values for known compression types.static java.lang.String[]compressionTypesKnown TIFF compression types.(package private) TIFFCompressorcompressorprivate static booleanDEBUGstatic intDEFAULT_BYTES_PER_STRIP(package private) static java.lang.StringEXIF_JPEG_COMPRESSION_TYPE(package private) longheaderPosition(package private) java.awt.image.RenderedImageimage(package private) TIFFImageMetadataimageMetadata(package private) javax.imageio.ImageTypeSpecifierimageTypeprivate booleaninReplacePixelsNest(package private) booleanisBilevelstatic boolean[]isCompressionLosslessLossless flag for known compression types.(package private) booleanisImageSimpleprivate booleanisInsertingEmpty(package private) booleanisInverted(package private) booleanisRescaling(package private) booleanisTiledprivate booleanisWritingEmpty(package private) booleanisWritingSequence(package private) intnativePhotometricInterpretation(package private) longnextIFDPointerPos(package private) longnextSpace(package private) intnumBands(package private) javax.imageio.ImageWriteParamparam(package private) intperiodX(package private) intperiodY(package private) intphotometricInterpretation(package private) intpixelsDone(package private) intpredictorprivate TIFFImageReaderreaderprivate long[]replacePixelsByteCountsprivate longreplacePixelsByteCountsPositionprivate intreplacePixelsIndexprivate java.lang.ObjectreplacePixelsLockprivate TIFFImageMetadatareplacePixelsMetadataprivate longreplacePixelsOffsetsPositionprivate java.awt.RectanglereplacePixelsRegionprivate long[]replacePixelsTileOffsets(package private) intsampleFormat(package private) int[]sampleSize(package private) byte[][]scale(package private) byte[]scale0(package private) byte[][]scaleh(package private) byte[][]scalel(package private) intscalingBitDepth(package private) int[]sourceBands(package private) intsourceHeight(package private) intsourceWidth(package private) intsourceXOffset(package private) intsourceYOffset(package private) javax.imageio.stream.ImageOutputStreamstream(package private) TIFFStreamMetadatastreamMetadatastatic java.lang.String[]TIFFCompressionTypesSupported TIFF compression types.(package private) inttileLength(package private) inttilesAcross(package private) inttilesDown(package private) inttileWidth(package private) inttotalPixels
-
Constructor Summary
Constructors Constructor Description TIFFImageWriter(javax.imageio.spi.ImageWriterSpi originatingProvider)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancanInsertEmpty(int imageIndex)booleancanInsertImage(int imageIndex)booleancanReplacePixels(int imageIndex)booleancanWriteEmpty()booleancanWriteSequence()private voidcheckParamsEmpty(javax.imageio.ImageTypeSpecifier imageType, int width, int height, java.util.List thumbnails)javax.imageio.metadata.IIOMetadataconvertImageMetadata(javax.imageio.metadata.IIOMetadata inData, javax.imageio.ImageTypeSpecifier imageType, javax.imageio.ImageWriteParam param)private TIFFImageMetadataconvertNativeImageMetadata(javax.imageio.metadata.IIOMetadata inData)Converts a nativecom_sun_media_imageio_plugins_tiff_image_1.0tree to aTIFFImageMetadataobject.private TIFFImageMetadataconvertStandardImageMetadata(javax.imageio.metadata.IIOMetadata inData)Converts a standardjavax_imageio_1.0tree to aTIFFImageMetadataobject.javax.imageio.metadata.IIOMetadataconvertStreamMetadata(javax.imageio.metadata.IIOMetadata inData, javax.imageio.ImageWriteParam param)voiddispose()voidendInsertEmpty()voidendReplacePixels()voidendWriteEmpty()voidendWriteSequence()private booleanequals(int[] s0, int[] s1)javax.imageio.metadata.IIOMetadatagetDefaultImageMetadata(javax.imageio.ImageTypeSpecifier imageType, javax.imageio.ImageWriteParam param)javax.imageio.metadata.IIOMetadatagetDefaultStreamMetadata(javax.imageio.ImageWriteParam param)javax.imageio.ImageWriteParamgetDefaultWriteParam()private voidinitializeScaleTables(int[] sampleSize)private voidinsert(int imageIndex, javax.imageio.IIOImage image, javax.imageio.ImageWriteParam param, boolean writeData)private booleanisEncodingEmpty()private voidlocateIFD(int imageIndex, long[] ifdpos, long[] ifd)voidprepareInsertEmpty(int imageIndex, javax.imageio.ImageTypeSpecifier imageType, int width, int height, javax.imageio.metadata.IIOMetadata imageMetadata, java.util.List thumbnails, javax.imageio.ImageWriteParam param)voidprepareReplacePixels(int imageIndex, java.awt.Rectangle region)voidprepareWriteEmpty(javax.imageio.metadata.IIOMetadata streamMetadata, javax.imageio.ImageTypeSpecifier imageType, int width, int height, javax.imageio.metadata.IIOMetadata imageMetadata, java.util.List thumbnails, javax.imageio.ImageWriteParam param)voidprepareWriteSequence(javax.imageio.metadata.IIOMetadata streamMetadata)private TIFFIFDreadIFD(int imageIndex)voidreplacePixels(java.awt.image.Raster raster, javax.imageio.ImageWriteParam param)voidreplacePixels(java.awt.image.RenderedImage image, javax.imageio.ImageWriteParam param)voidreset()voidsetOutput(java.lang.Object output)(package private) voidsetupMetadata(java.awt.image.ColorModel cm, java.awt.image.SampleModel sm, int destWidth, int destHeight)Sets up the output metadata adding, removing, and overriding fields as needed.private java.awt.image.Rastersubsample(java.awt.image.Raster raster, int[] sourceBands, int subOriginX, int subOriginY, int subPeriodX, int subPeriodY, int dstOffsetX, int dstOffsetY, java.awt.Rectangle target)voidwrite(javax.imageio.metadata.IIOMetadata sm, javax.imageio.IIOImage iioimage, javax.imageio.ImageWriteParam p)private voidwrite(javax.imageio.metadata.IIOMetadata sm, javax.imageio.IIOImage iioimage, javax.imageio.ImageWriteParam p, boolean writeHeader, boolean writeData)private voidwriteHeader()voidwriteInsert(int imageIndex, javax.imageio.IIOImage image, javax.imageio.ImageWriteParam param)private intwriteTile(java.awt.Rectangle tileRect, TIFFCompressor compressor)voidwriteToSequence(javax.imageio.IIOImage image, javax.imageio.ImageWriteParam param)static intXToTileX(int x, int tileGridXOffset, int tileWidth)Converts a pixel's X coordinate into a horizontal tile index relative to a given tile grid layout specified by its X offset and tile width.static intYToTileY(int y, int tileGridYOffset, int tileHeight)Converts a pixel's Y coordinate into a vertical tile index relative to a given tile grid layout specified by its Y offset and tile height.-
Methods inherited from class javax.imageio.ImageWriter
abort, abortRequested, addIIOWriteProgressListener, addIIOWriteWarningListener, canRemoveImage, canReplaceImageMetadata, canReplaceStreamMetadata, canWriteRasters, clearAbortRequest, getAvailableLocales, getLocale, getNumThumbnailsSupported, getOriginatingProvider, getOutput, getPreferredThumbnailSizes, processImageComplete, processImageProgress, processImageStarted, processThumbnailComplete, processThumbnailProgress, processThumbnailStarted, processWarningOccurred, processWarningOccurred, processWriteAborted, removeAllIIOWriteProgressListeners, removeAllIIOWriteWarningListeners, removeIIOWriteProgressListener, removeIIOWriteWarningListener, removeImage, replaceImageMetadata, replaceStreamMetadata, setLocale, write, write
-
-
-
-
Field Detail
-
DEBUG
private static final boolean DEBUG
- See Also:
- Constant Field Values
-
EXIF_JPEG_COMPRESSION_TYPE
static final java.lang.String EXIF_JPEG_COMPRESSION_TYPE
- See Also:
- Constant Field Values
-
DEFAULT_BYTES_PER_STRIP
public static final int DEFAULT_BYTES_PER_STRIP
- See Also:
- Constant Field Values
-
TIFFCompressionTypes
public static final java.lang.String[] TIFFCompressionTypes
Supported TIFF compression types.
-
compressionTypes
public static final java.lang.String[] compressionTypes
Known TIFF compression types.
-
isCompressionLossless
public static final boolean[] isCompressionLossless
Lossless flag for known compression types.
-
compressionNumbers
public static final int[] compressionNumbers
Compression tag values for known compression types.
-
stream
javax.imageio.stream.ImageOutputStream stream
-
headerPosition
long headerPosition
-
image
java.awt.image.RenderedImage image
-
imageType
javax.imageio.ImageTypeSpecifier imageType
-
byteOrder
java.nio.ByteOrder byteOrder
-
param
javax.imageio.ImageWriteParam param
-
compressor
TIFFCompressor compressor
-
colorConverter
TIFFColorConverter colorConverter
-
streamMetadata
TIFFStreamMetadata streamMetadata
-
imageMetadata
TIFFImageMetadata imageMetadata
-
sourceXOffset
int sourceXOffset
-
sourceYOffset
int sourceYOffset
-
sourceWidth
int sourceWidth
-
sourceHeight
int sourceHeight
-
sourceBands
int[] sourceBands
-
periodX
int periodX
-
periodY
int periodY
-
bitDepth
int bitDepth
-
numBands
int numBands
-
tileWidth
int tileWidth
-
tileLength
int tileLength
-
tilesAcross
int tilesAcross
-
tilesDown
int tilesDown
-
sampleSize
int[] sampleSize
-
scalingBitDepth
int scalingBitDepth
-
isRescaling
boolean isRescaling
-
isBilevel
boolean isBilevel
-
isImageSimple
boolean isImageSimple
-
isInverted
boolean isInverted
-
isTiled
boolean isTiled
-
nativePhotometricInterpretation
int nativePhotometricInterpretation
-
photometricInterpretation
int photometricInterpretation
-
bitsPerSample
char[] bitsPerSample
-
sampleFormat
int sampleFormat
-
scale
byte[][] scale
-
scale0
byte[] scale0
-
scaleh
byte[][] scaleh
-
scalel
byte[][] scalel
-
compression
int compression
-
predictor
int predictor
-
totalPixels
int totalPixels
-
pixelsDone
int pixelsDone
-
nextIFDPointerPos
long nextIFDPointerPos
-
nextSpace
long nextSpace
-
isWritingSequence
boolean isWritingSequence
-
isInsertingEmpty
private boolean isInsertingEmpty
-
isWritingEmpty
private boolean isWritingEmpty
-
replacePixelsLock
private java.lang.Object replacePixelsLock
-
replacePixelsIndex
private int replacePixelsIndex
-
replacePixelsMetadata
private TIFFImageMetadata replacePixelsMetadata
-
replacePixelsTileOffsets
private long[] replacePixelsTileOffsets
-
replacePixelsByteCounts
private long[] replacePixelsByteCounts
-
replacePixelsOffsetsPosition
private long replacePixelsOffsetsPosition
-
replacePixelsByteCountsPosition
private long replacePixelsByteCountsPosition
-
replacePixelsRegion
private java.awt.Rectangle replacePixelsRegion
-
inReplacePixelsNest
private boolean inReplacePixelsNest
-
reader
private TIFFImageReader reader
-
-
Method Detail
-
XToTileX
public static int XToTileX(int x, int tileGridXOffset, int tileWidth)Converts a pixel's X coordinate into a horizontal tile index relative to a given tile grid layout specified by its X offset and tile width.If
tileWidth < 0, the results of this method are undefined. IftileWidth == 0, anArithmeticExceptionwill be thrown.- Throws:
java.lang.ArithmeticException- IftileWidth == 0.
-
YToTileY
public static int YToTileY(int y, int tileGridYOffset, int tileHeight)Converts a pixel's Y coordinate into a vertical tile index relative to a given tile grid layout specified by its Y offset and tile height.If
tileHeight < 0, the results of this method are undefined. IftileHeight == 0, anArithmeticExceptionwill be thrown.- Throws:
java.lang.ArithmeticException- IftileHeight == 0.
-
getDefaultWriteParam
public javax.imageio.ImageWriteParam getDefaultWriteParam()
- Overrides:
getDefaultWriteParamin classjavax.imageio.ImageWriter
-
setOutput
public void setOutput(java.lang.Object output)
- Overrides:
setOutputin classjavax.imageio.ImageWriter
-
getDefaultStreamMetadata
public javax.imageio.metadata.IIOMetadata getDefaultStreamMetadata(javax.imageio.ImageWriteParam param)
- Specified by:
getDefaultStreamMetadatain classjavax.imageio.ImageWriter
-
getDefaultImageMetadata
public javax.imageio.metadata.IIOMetadata getDefaultImageMetadata(javax.imageio.ImageTypeSpecifier imageType, javax.imageio.ImageWriteParam param)- Specified by:
getDefaultImageMetadatain classjavax.imageio.ImageWriter
-
convertStreamMetadata
public javax.imageio.metadata.IIOMetadata convertStreamMetadata(javax.imageio.metadata.IIOMetadata inData, javax.imageio.ImageWriteParam param)- Specified by:
convertStreamMetadatain interfacejavax.imageio.ImageTranscoder- Specified by:
convertStreamMetadatain classjavax.imageio.ImageWriter
-
convertImageMetadata
public javax.imageio.metadata.IIOMetadata convertImageMetadata(javax.imageio.metadata.IIOMetadata inData, javax.imageio.ImageTypeSpecifier imageType, javax.imageio.ImageWriteParam param)- Specified by:
convertImageMetadatain interfacejavax.imageio.ImageTranscoder- Specified by:
convertImageMetadatain classjavax.imageio.ImageWriter
-
convertStandardImageMetadata
private TIFFImageMetadata convertStandardImageMetadata(javax.imageio.metadata.IIOMetadata inData) throws javax.imageio.metadata.IIOInvalidTreeException
Converts a standardjavax_imageio_1.0tree to aTIFFImageMetadataobject.- Parameters:
inData- The metadata object.- Returns:
- a
TIFFImageMetadataornullif the standard tree derived from the input object isnull. - Throws:
java.lang.IllegalArgumentException- ifinDataisnullor does not support the standard metadata format.javax.imageio.metadata.IIOInvalidTreeException- ifinDatagenerates an invalid standard metadata tree.
-
convertNativeImageMetadata
private TIFFImageMetadata convertNativeImageMetadata(javax.imageio.metadata.IIOMetadata inData) throws javax.imageio.metadata.IIOInvalidTreeException
Converts a nativecom_sun_media_imageio_plugins_tiff_image_1.0tree to aTIFFImageMetadataobject.- Parameters:
inData- The metadata object.- Returns:
- a
TIFFImageMetadataornullif the native tree derived from the input object isnull. - Throws:
java.lang.IllegalArgumentException- ifinDataisnullor does not support the native metadata format.javax.imageio.metadata.IIOInvalidTreeException- ifinDatagenerates an invalid native metadata tree.
-
setupMetadata
void setupMetadata(java.awt.image.ColorModel cm, java.awt.image.SampleModel sm, int destWidth, int destHeight) throws javax.imageio.IIOExceptionSets up the output metadata adding, removing, and overriding fields as needed. The destination image dimensions are provided as parameters because these might differ from those of the source due to subsampling.- Parameters:
cm- TheColorModelof the image being written.sm- TheSampleModelof the image being written.destWidth- The width of the written image after subsampling.destHeight- The height of the written image after subsampling.- Throws:
javax.imageio.IIOException
-
writeTile
private int writeTile(java.awt.Rectangle tileRect, TIFFCompressor compressor) throws java.io.IOException- Parameters:
tileRect- The area to be written which might be outside the image.- Throws:
java.io.IOException
-
equals
private boolean equals(int[] s0, int[] s1)
-
initializeScaleTables
private void initializeScaleTables(int[] sampleSize)
-
write
public void write(javax.imageio.metadata.IIOMetadata sm, javax.imageio.IIOImage iioimage, javax.imageio.ImageWriteParam p) throws java.io.IOException- Specified by:
writein classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
writeHeader
private void writeHeader() throws java.io.IOException- Throws:
java.io.IOException
-
write
private void write(javax.imageio.metadata.IIOMetadata sm, javax.imageio.IIOImage iioimage, javax.imageio.ImageWriteParam p, boolean writeHeader, boolean writeData) throws java.io.IOException- Throws:
java.io.IOException
-
canWriteSequence
public boolean canWriteSequence()
- Overrides:
canWriteSequencein classjavax.imageio.ImageWriter
-
prepareWriteSequence
public void prepareWriteSequence(javax.imageio.metadata.IIOMetadata streamMetadata) throws java.io.IOException- Overrides:
prepareWriteSequencein classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
writeToSequence
public void writeToSequence(javax.imageio.IIOImage image, javax.imageio.ImageWriteParam param) throws java.io.IOException- Overrides:
writeToSequencein classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
endWriteSequence
public void endWriteSequence() throws java.io.IOException- Overrides:
endWriteSequencein classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
canInsertImage
public boolean canInsertImage(int imageIndex) throws java.io.IOException- Overrides:
canInsertImagein classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
locateIFD
private void locateIFD(int imageIndex, long[] ifdpos, long[] ifd) throws java.io.IOException- Throws:
java.io.IOException
-
writeInsert
public void writeInsert(int imageIndex, javax.imageio.IIOImage image, javax.imageio.ImageWriteParam param) throws java.io.IOException- Overrides:
writeInsertin classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
insert
private void insert(int imageIndex, javax.imageio.IIOImage image, javax.imageio.ImageWriteParam param, boolean writeData) throws java.io.IOException- Throws:
java.io.IOException
-
isEncodingEmpty
private boolean isEncodingEmpty()
-
canInsertEmpty
public boolean canInsertEmpty(int imageIndex) throws java.io.IOException- Overrides:
canInsertEmptyin classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
canWriteEmpty
public boolean canWriteEmpty() throws java.io.IOException- Overrides:
canWriteEmptyin classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
checkParamsEmpty
private void checkParamsEmpty(javax.imageio.ImageTypeSpecifier imageType, int width, int height, java.util.List thumbnails)
-
prepareInsertEmpty
public void prepareInsertEmpty(int imageIndex, javax.imageio.ImageTypeSpecifier imageType, int width, int height, javax.imageio.metadata.IIOMetadata imageMetadata, java.util.List thumbnails, javax.imageio.ImageWriteParam param) throws java.io.IOException- Overrides:
prepareInsertEmptyin classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
prepareWriteEmpty
public void prepareWriteEmpty(javax.imageio.metadata.IIOMetadata streamMetadata, javax.imageio.ImageTypeSpecifier imageType, int width, int height, javax.imageio.metadata.IIOMetadata imageMetadata, java.util.List thumbnails, javax.imageio.ImageWriteParam param) throws java.io.IOException- Overrides:
prepareWriteEmptyin classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
endInsertEmpty
public void endInsertEmpty() throws java.io.IOException- Overrides:
endInsertEmptyin classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
endWriteEmpty
public void endWriteEmpty() throws java.io.IOException- Overrides:
endWriteEmptyin classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
readIFD
private TIFFIFD readIFD(int imageIndex) throws java.io.IOException
- Throws:
java.io.IOException
-
canReplacePixels
public boolean canReplacePixels(int imageIndex) throws java.io.IOException- Overrides:
canReplacePixelsin classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
prepareReplacePixels
public void prepareReplacePixels(int imageIndex, java.awt.Rectangle region) throws java.io.IOException- Overrides:
prepareReplacePixelsin classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
subsample
private java.awt.image.Raster subsample(java.awt.image.Raster raster, int[] sourceBands, int subOriginX, int subOriginY, int subPeriodX, int subPeriodY, int dstOffsetX, int dstOffsetY, java.awt.Rectangle target)
-
replacePixels
public void replacePixels(java.awt.image.RenderedImage image, javax.imageio.ImageWriteParam param) throws java.io.IOException- Overrides:
replacePixelsin classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
replacePixels
public void replacePixels(java.awt.image.Raster raster, javax.imageio.ImageWriteParam param) throws java.io.IOException- Overrides:
replacePixelsin classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
endReplacePixels
public void endReplacePixels() throws java.io.IOException- Overrides:
endReplacePixelsin classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
reset
public void reset()
- Overrides:
resetin classjavax.imageio.ImageWriter
-
dispose
public void dispose()
- Overrides:
disposein classjavax.imageio.ImageWriter
-
-