Class JPEGSegmentImageInputStream
- java.lang.Object
-
- javax.imageio.stream.ImageInputStreamImpl
-
- com.twelvemonkeys.imageio.plugins.jpeg.JPEGSegmentImageInputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.io.DataInput
,java.lang.AutoCloseable
,javax.imageio.stream.ImageInputStream
final class JPEGSegmentImageInputStream extends javax.imageio.stream.ImageInputStreamImpl
ImageInputStream implementation that filters out or rewrites certain JPEG segments.- Version:
- $Id: JPEGSegmentImageInputStream.java,v 1.0 30.01.12 16:15 haraldk Exp$
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
JPEGSegmentImageInputStream.AdobeAPP14Replacement
Workaround for a known bug in com.sun.imageio.plugins.jpeg.AdobeMarkerSegment, leaving the buffer in an inconsistent state, if the length of the APP14/Adobe is not exactly 16 bytes.(package private) static class
JPEGSegmentImageInputStream.ComponentIdSet
(package private) static class
JPEGSegmentImageInputStream.DownsampledDQTReplacement
Workaround for a known bug in com.sun.imageio.plugins.jpeg.DQTMarkerSegment, throwing exception, if the DQT precision is 16 bits (not 8 bits).(package private) static class
JPEGSegmentImageInputStream.ReplacementSegment
(package private) static class
JPEGSegmentImageInputStream.Segment
-
Field Summary
Fields Modifier and Type Field Description private JPEGSegmentImageInputStream.ComponentIdSet
componentIds
private int
currentSegment
private JPEGSegmentImageInputStream.Segment
segment
private java.util.List<JPEGSegmentImageInputStream.Segment>
segments
private javax.imageio.stream.ImageInputStream
stream
private JPEGSegmentWarningListener
warningListener
-
Constructor Summary
Constructors Constructor Description JPEGSegmentImageInputStream(javax.imageio.stream.ImageInputStream stream)
JPEGSegmentImageInputStream(javax.imageio.stream.ImageInputStream stream, JPEGSegmentWarningListener warningListener)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description (package private) static java.lang.String
asAsciiString(byte[] data, int offset, int length)
(package private) static java.lang.String
asNullTerminatedAsciiString(byte[] data, int offset)
private JPEGSegmentImageInputStream.Segment
fetchSegment()
protected void
finalize()
Deprecated.(package private) static boolean
isAppSegmentMarker(int marker)
private static boolean
isAppSegmentWithId(java.lang.String segmentId, javax.imageio.stream.ImageInputStream stream)
(package private) static boolean
isSOFMarker(int marker)
private void
processWarningOccured(java.lang.String warning)
int
read()
int
read(byte[] b, int off, int len)
private byte[]
readReplaceDuplicateSOFnComponentIds(int marker, long length)
private byte[]
readReplaceDuplicateSOSComponentSelectors(long length)
private static byte[]
readSegment(int marker, int length, javax.imageio.stream.ImageInputStream stream)
private void
repositionAsNecessary()
private void
streamInit()
-
Methods inherited from class javax.imageio.stream.ImageInputStreamImpl
checkClosed, close, flush, flushBefore, getBitOffset, getByteOrder, getFlushedPosition, getStreamPosition, isCached, isCachedFile, isCachedMemory, length, mark, read, readBit, readBits, readBoolean, readByte, readBytes, readChar, readDouble, readFloat, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readFully, readInt, readLine, readLong, readShort, readUnsignedByte, readUnsignedInt, readUnsignedShort, readUTF, reset, seek, setBitOffset, setByteOrder, skipBytes, skipBytes
-
-
-
-
Field Detail
-
stream
private final javax.imageio.stream.ImageInputStream stream
-
warningListener
private final JPEGSegmentWarningListener warningListener
-
componentIds
private final JPEGSegmentImageInputStream.ComponentIdSet componentIds
-
segments
private final java.util.List<JPEGSegmentImageInputStream.Segment> segments
-
currentSegment
private int currentSegment
-
segment
private JPEGSegmentImageInputStream.Segment segment
-
-
Constructor Detail
-
JPEGSegmentImageInputStream
JPEGSegmentImageInputStream(javax.imageio.stream.ImageInputStream stream, JPEGSegmentWarningListener warningListener)
-
JPEGSegmentImageInputStream
JPEGSegmentImageInputStream(javax.imageio.stream.ImageInputStream stream)
-
-
Method Detail
-
processWarningOccured
private void processWarningOccured(java.lang.String warning)
-
fetchSegment
private JPEGSegmentImageInputStream.Segment fetchSegment() throws java.io.IOException
- Throws:
java.io.IOException
-
readReplaceDuplicateSOSComponentSelectors
private byte[] readReplaceDuplicateSOSComponentSelectors(long length) throws java.io.IOException
- Throws:
java.io.IOException
-
readReplaceDuplicateSOFnComponentIds
private byte[] readReplaceDuplicateSOFnComponentIds(int marker, long length) throws java.io.IOException
- Throws:
java.io.IOException
-
readSegment
private static byte[] readSegment(int marker, int length, javax.imageio.stream.ImageInputStream stream) throws java.io.IOException
- Throws:
java.io.IOException
-
isAppSegmentWithId
private static boolean isAppSegmentWithId(java.lang.String segmentId, javax.imageio.stream.ImageInputStream stream) throws java.io.IOException
- Throws:
java.io.IOException
-
asNullTerminatedAsciiString
static java.lang.String asNullTerminatedAsciiString(byte[] data, int offset)
-
asAsciiString
static java.lang.String asAsciiString(byte[] data, int offset, int length)
-
streamInit
private void streamInit() throws java.io.IOException
- Throws:
java.io.IOException
-
isAppSegmentMarker
static boolean isAppSegmentMarker(int marker)
-
isSOFMarker
static boolean isSOFMarker(int marker)
-
repositionAsNecessary
private void repositionAsNecessary() throws java.io.IOException
- Throws:
java.io.IOException
-
read
public int read() throws java.io.IOException
- Specified by:
read
in interfacejavax.imageio.stream.ImageInputStream
- Specified by:
read
in classjavax.imageio.stream.ImageInputStreamImpl
- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException
- Specified by:
read
in interfacejavax.imageio.stream.ImageInputStream
- Specified by:
read
in classjavax.imageio.stream.ImageInputStreamImpl
- Throws:
java.io.IOException
-
finalize
@Deprecated protected void finalize()
Deprecated.- Overrides:
finalize
in classjavax.imageio.stream.ImageInputStreamImpl
-
-