/jpeg-segment-finder

Java library to determine the offsets and lengths of metadata segments in a JPEG file.

Primary LanguageJavaApache License 2.0Apache-2.0

Travis build status Maven Central

jpeg-segment-finder

Java library to determine the offsets and lengths of metadata segments in a JPEG file. This library is intended to be small and not pull in a lot of external dependencies. Use it if you want to parse JPEG metadata yourself but don't want to find JPEG metadata yourself.

Maven

<dependency>
    <groupId>com.github.mike10004</groupId>
    <artifactId>jpeg-segment-finder</artifactId>
    <version>0.5</version>
</dependency>

Usage

Find IPTC segments marked by byte 0xED:

JpegSegmentFinder finder = new JpegSegmentFinder();
List<JpegSegmentSpec> segments;
try (InputStream in = new FileInputStream(jpegFile)) {
    segments = finder.findSegments(in, Collections.singleton((byte) 0xED));
}
JpegSegmentSpec iptc = segments.get(0);
byte[] jpegBytes = Files.readAllBytes(jpegFile.toPath());
int from = (int) iptc.contentOffset;
int to = from + (int) iptc.contentLength;
byte[] segmentBytes = Arrays.copyOfRange(jpegBytes, from, to);
// ...analyze those segments bytes as you please...

Credits

Thank you to Drew Noakes for metadata-extractor. This library is a hack on some classes in that library. The test image is from that project's test resources.