|
||||||||||
| 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
JpegProcessingExceptionpublic 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 IOExceptions
public 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 stream
private 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 | |||||||||