Bot releases are visible (Hide)
Published by drewnoakes almost 10 years ago
Released 28 May 2012
RandomAccessFileReader
which would result in string values failing to read correctly from files. Thanks to Bruce Grant for reporting this issue.Published by drewnoakes almost 10 years ago
Released 24 May 2012
CanonMakernoteDescriptor.getFlashDetailsDescription()
where the description was shown as a meaningless integer instead of a string such as "Internal flash" or "External E-TTL"Published by drewnoakes almost 10 years ago
Released 22 May 2012
Highlights:
Detail:
GeoLocation
type and updated the means of extracting GPS data from the GpsDirectory
BufferReader
from a class to an interface, renaming the prior implementation as ByteArrayReader
RandomAccessFileReader
which allows the processing of files without loading the whole file into memoryPsdMetadataReader
, PsdReader
, PsdHeaderDirectory
and PsdHeaderDescriptor
classes which offer some basic support for PSD filesMetadataReader.extract
method to take a BufferReader
instead of a byte[]
Published by drewnoakes almost 10 years ago
Released 20 May 2012
Published by drewnoakes almost 10 years ago
Released 9 May 2011
SonyMakernote
classes to SonyType1Makernote
SonyType1MakernoteDirectory
byte[]
in ExifReader
to be via BufferReader
, ensuring proper bounds checking during processingJpegMetadataReader
no longer assumes that certain segments always hold one type of metadata, cycling through the segments available and opportunistically detecting segments that can be processed[0 1 0 0]
as well as [48 49 48 48]
BufferBoundsException
which is thrown by all BufferReader
methods, ensuring that calling code properly handles cases when we run out of data@Nullable
and @NotNull
attributes across entire codebaseAllTests
class no longer needed and removedExifReader
around handling of float32/64 values. This may never have been seen as it doesn't seem that these types are ever used in Exif dataDirectory.getString(int)
when the underlying value is an array of primitives other than intGpsDirectory
which incorrectly confused the TAG_GPS_IMG_DIRECTION_REF
and TAG_GPS_IMG_DIRECTION
tag namesTAG_GPS_AREA_INFORMATION
GpsDirectory.TAG_GPS_VERSION_ID
SOF0-SOFF
Jpeg segmentsOutOfMemoryError
if the advertised size of the image thumbnail is larger than the available bytes in the Exif segmentforeach
nowMetadataException
from all description gettersReader
classes to take their data in the extract method, rather than in their constructors, offering thread safety and allowing reuseMetadata.hasErrors()
that reports whether there exists an error in any directoryExifThumbnailDirectory
with ExifThumbnailDescriptor
ExifDescriptor
into ExifIFD0Descriptor
and ExifSubIFDDescriptor
to mirror actual IFD structure in physical metadata, preventing against tag overwrites due to merging, and making later support for writing metadata easierDirectory.getString
that accepts a charsetArrayList
and HashMap
with their generic counterpartsTagDescriptor
genericMetadata.getDirectory
and Metadata.containsDirectory
methods and removed cast and check that are subsequently unnecessaryDirectory.getDate
that accepts a TimeZone
to be used if the underlying value is a string and must be parsedExifDirectory.TAG_COMPRESSION
to ExifDirectory.TAG_THUMBNAIL_COMPRESSION
ExifDirectory
com.sun.image.codec.jpeg
in JpegMetadataReader
Rational
as it overrides equalsRational
now backed by long, not intMetadataReader
and all its implementationsbyte[]}} across all
Readerclasses via use of new
BufferReader` classDirectory
Metadata.getDirectory
as getOrCreateDirectory
, and made a new method getDirectory
that doesn't lazily create a directorybyte[]
as a data sourceBufferReader.getString
that takes a charsetExifReader
by removing some fields so that state is now mostly maintained on the stackJpegSegmentReader.readSegment()
no longer throws JpegProcessingException
, simplifying some call sites tooXMPCore
moduleDirectory
and Descriptor
are no longer serialisableserialVersionUID
on all serialisable exception types, and Rational
Output
folder from IntelliJ projectImageMetadataReader.main
now has an option to output Wiki format tables to more easily show sample output information on the project's wikiImageMetadataReader.main
now accept multiple file pathsReleased 27 May 2011
Age
class for more meaningful representation of recognised people's ages in Panasonic camera photos.PanasonicMakernoteDescriptor.getTitleDescription
was returning the text associated with TAG_LANDMARK
PanasonicMakernoteDirectory.getAge
method for raw access to the Age
object associated with certain tagshashCode()
method to Face
classFace
classPanasonicMakernoteDescriptor
XMPMeta
object instance available on XmpDirectory
for general consumptionAdobeJpegDirectory
and related classes, which comes from the APPE JPEG segment, when presentReleased 18 Nov 2011
IccReader
XmpReader
ExtractAppSegmentBytesToFileUtility
for writing specific JPG segments to files, and reading them again into byte[]
for convenience in unit testing (and keeping source code file size down)Published by drewnoakes almost 10 years ago
Released 14 Dec 2006
ImageMetadataReader
can be used for all supported file types.Published by drewnoakes almost 10 years ago
Released 25 Feb 2006
ExifDescriptor
. Thanks to Ferret Renaud.Published by drewnoakes almost 10 years ago
Released 12 Jan 2006
ExifReader
for cyclic directory references. Thanks to John Sidney-Woollett for reporting this bug (reported for Fuji FinePix A101 and Canon 20D).ExifReader
.OutOfMemoryError
seen in certain Canon 20D images. Thanks to Henry Yeung for providing an image to reproduce this error..metadata
files, rather than entire sample JPEG files. These .metadata
files contain all non-image JPEG segments, making them suitable for unit tests whilst being much smaller on disk.Published by drewnoakes almost 10 years ago
Released 22 Nov 2003
Published by drewnoakes almost 10 years ago
Released 24 Oct 2003
JpegDirectory
had tag names for image width and height around the wrong way. Thanks to Sander Smith for pointing this out.Published by drewnoakes almost 10 years ago
Released 18 Oct 2003
ExifDirectory
Published by drewnoakes almost 10 years ago
Released 12 Jan 2003
Metadata
instances, using hasErrors()
and getErrors()
Metadata
and dependant classes now serializable for network transmission, and persistance in files & databasesInputStream
s, such as network connectionsPublished by drewnoakes almost 10 years ago
Released 10 Dec 2002
Enormous changes to the class and package structure in this release prohibit a class-by-class breakdown of changes. The focus is no longer on Exif metadata alone, but now on general metadata extraction from multiple media types.
Changes support:
Simpler extensibility changes the focus from Exif extraction alone and opens the scope to general metadata extraction. Future development will introduce new media and metadata support with little or no impact to existing classes.
Published by drewnoakes almost 10 years ago
Released 6 Nov 2002
ExifExtractor.java
IFD_*
constants to refer to the image file directory you require (Exif, Interop, GPS and Makernote*
) -- this avoids collisions where two tags share the same codeExifLoader.java
ImageInfo.java
iterator()
now returns an Iterator over a list of TagValue
objectsget*Description()
methods to detail GPS tags, among othersTagValue.java
Rational.java
toSimpleString()
to factor more complex rational numbers into a simpler form. I.e. 10/15 -> 2/3toSimpleString()
now accepts a boolean flag, 'allowDecimals
' which will display the rational number in decimal form if it fits within 5 digits. I.e. 3/4 -> 0.75 when allowDecimal == trueJpegSegmentReader.java
tests\*.java
Website