|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.drew.imaging.jpeg.JpegSegmentReader
public class JpegSegmentReader
Performs read functions of Jpeg files, returning specific file segments. TODO add a findAvailableSegments() method TODO add more segment identifiers TODO add a getSegmentDescription() method, returning for example 'App1 application data segment, commonly containing Exif data'
Field Summary | |
---|---|
private byte[] |
_data
Jpeg data as byte array |
private File |
_file
Jpeg file |
private JpegSegmentData |
_segmentData
|
private InputStream |
_stream
Jpeg data as an InputStream |
private static byte |
MARKER_EOI
Private, because one wouldn't search for it. |
static byte |
SEGMENT_APP0
APP0 Jpeg segment identifier -- Jfif data. |
static byte |
SEGMENT_APP1
APP1 Jpeg segment identifier -- where Exif data is kept. |
static byte |
SEGMENT_APP2
APP2 Jpeg segment identifier. |
static byte |
SEGMENT_APP3
APP3 Jpeg segment identifier. |
static byte |
SEGMENT_APP4
APP4 Jpeg segment identifier. |
static byte |
SEGMENT_APP5
APP5 Jpeg segment identifier. |
static byte |
SEGMENT_APP6
APP6 Jpeg segment identifier. |
static byte |
SEGMENT_APP7
APP7 Jpeg segment identifier. |
static byte |
SEGMENT_APP8
APP8 Jpeg segment identifier. |
static byte |
SEGMENT_APP9
APP9 Jpeg segment identifier. |
static byte |
SEGMENT_APPA
APPA Jpeg segment identifier -- can hold Unicode comments. |
static byte |
SEGMENT_APPB
APPB Jpeg segment identifier. |
static byte |
SEGMENT_APPC
APPC Jpeg segment identifier. |
static byte |
SEGMENT_APPD
APPD Jpeg segment identifier -- IPTC data in here. |
static byte |
SEGMENT_APPE
APPE Jpeg segment identifier. |
static byte |
SEGMENT_APPF
APPF Jpeg segment identifier. |
static byte |
SEGMENT_COM
Jpeg comment segment identifier. |
static byte |
SEGMENT_DHT
Define Huffman Table segment identifier. |
static byte |
SEGMENT_DQT
Define Quantization Table segment identifier. |
static byte |
SEGMENT_SOF0
Start-of-Frame Zero segment identifier. |
static byte |
SEGMENT_SOI
Start Of Image segment identifier. |
private static byte |
SEGMENT_SOS
Private, because this segment crashes my algorithm, and searching for it doesn't work (yet). |
Constructor Summary | |
---|---|
JpegSegmentReader(byte[] fileContents)
Creates a JpegSegmentReader for a byte array. |
|
JpegSegmentReader(File file)
Creates a JpegSegmentReader for a specific file. |
|
JpegSegmentReader(InputStream in)
Creates a JpegSegmentReader for an InputStream. |
|
JpegSegmentReader(JpegSegmentData segmentData)
Creates a JpegSegmentReader for a JpegSegmentData. |
Method Summary | |
---|---|
private BufferedInputStream |
getJpegInputStream()
Private helper method to create a BufferedInputStream of Jpeg data from whichever data source was specified upon construction of this instance. |
int |
getSegmentCount(byte segmentMarker)
Returns the number of segments having the specified JPEG segment marker. |
JpegSegmentData |
getSegmentData()
Returns the JpegSegmentData object used by this reader. |
private boolean |
isValidJpegHeaderBytes(InputStream fileStream)
Helper method that validates the Jpeg file's magic number. |
byte[] |
readSegment(byte segmentMarker)
Reads the first instance of a given Jpeg segment, returning the contents as a byte array. |
byte[] |
readSegment(byte segmentMarker,
int occurrence)
Reads the first instance of a given Jpeg segment, returning the contents as a byte array. |
private void |
readSegments()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private final File _file
private final byte[] _data
private final InputStream _stream
private JpegSegmentData _segmentData
private static final byte SEGMENT_SOS
private static final byte MARKER_EOI
public static final byte SEGMENT_APP0
public static final byte SEGMENT_APP1
public static final byte SEGMENT_APP2
public static final byte SEGMENT_APP3
public static final byte SEGMENT_APP4
public static final byte SEGMENT_APP5
public static final byte SEGMENT_APP6
public static final byte SEGMENT_APP7
public static final byte SEGMENT_APP8
public static final byte SEGMENT_APP9
public static final byte SEGMENT_APPA
public static final byte SEGMENT_APPB
public static final byte SEGMENT_APPC
public static final byte SEGMENT_APPD
public static final byte SEGMENT_APPE
public static final byte SEGMENT_APPF
public static final byte SEGMENT_SOI
public static final byte SEGMENT_DQT
public static final byte SEGMENT_DHT
public static final byte SEGMENT_SOF0
public static final byte SEGMENT_COM
Constructor Detail |
---|
public JpegSegmentReader(File file) throws JpegProcessingException
file
- the Jpeg file to read segments from
JpegProcessingException
public JpegSegmentReader(byte[] fileContents) throws JpegProcessingException
fileContents
- the byte array containing Jpeg data
JpegProcessingException
public JpegSegmentReader(InputStream in) throws JpegProcessingException
in
- the InputStream containing Jpeg data
JpegProcessingException
public JpegSegmentReader(JpegSegmentData segmentData)
segmentData
- an object containing prepared JPEG segment data.Method Detail |
---|
public byte[] readSegment(byte segmentMarker) throws JpegProcessingException
segmentMarker
- the byte identifier for the desired segment
JpegProcessingException
- for any problems processing the Jpeg data,
including inner IOExceptionspublic byte[] readSegment(byte segmentMarker, int occurrence)
segmentMarker
- the byte identifier for the desired segmentoccurrence
- the occurrence of the specified segment within the jpeg file
public final int getSegmentCount(byte segmentMarker)
segmentMarker
- the JPEG segment identifying marker.
public final JpegSegmentData getSegmentData()
private void readSegments() throws JpegProcessingException
JpegProcessingException
private BufferedInputStream getJpegInputStream() throws JpegProcessingException
JpegProcessingException
- for any problems obtaining the streamprivate boolean isValidJpegHeaderBytes(InputStream fileStream) throws IOException
fileStream
- the InputStream to read bytes from, which must be positioned
at its start (i.e. no bytes read yet)
IOException
- for any problem in reading the file
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |