Meta Data Spring Project.
Version : Alpha 0.12
Date : March 2010
Author : Ferret Renaud (renaud91@users.sourceforge.net)
URL : http://sourceforge.net/projects/metadataspr/
-------------------------------------------------------------------------------
1. Aim of this project
2. Launch
3. Known bug or issues
4. Historic
5. Result file for Alpha 0.12
-------------------------------------------------------------------------------
1. Aim of this project
Extract meta data from image.
Use XML Spring file in order to add/remove/customize meta data reading
and viewing.
This project is not capable of writing meta data back into images.
This project greatly inspired from:
- http://sourceforge.net/projects/metaphile - Metaphile from Stuart Wigley
- http://www.drewnoakes.com/code/exif/ - MetaDataExtractor from Drew Noake
- http://www.sno.phy.queensu.ca/~phil/exiftool/ - ExifTool by Phil Harvey
-------------------------------------------------------------------------------
2. Launch
2.1 Before starting
This software need a Java virtual machine installed on your computer.
The minimal version needed is 6.
In order to download a Java VM you can go to http://java.sun.com.
If you want to check the current version running on your system, simply
open a console window and type :
java -version
If you get no answer then you have no Java, if the version is bellow 1.6
then you've an inappropriate version of Java for this software.
2.2 At last, starting
Keep in mind that this software is still in alpha, so a lot of code may
change until first release.
Use mdt.Run class in order to start the project.
java -jar MetaDataSpr.jar
-I:[InPutFileName]
-O:[OutPutFileName]
-M:[MODE]
-GC
-T:[X]
-T will activate multi-thread treatment. The X is the maximum number of
thread allowed. Each image will be treated in one thread.
Result on memory usage and processor time consumption may differ,
regarding your system and the size of the images you want to analyze.
Of course, this is only useful when you analyze more than one image.
There is no maximum value, but above 8 the result are mostly the same.
-GC will optimize memory usage but will slow down execution.
Where MODE can be one of the following:
- XML: will return an XML file. Note that all values will be in CDDATA
in order to avoid errors.
- TXT: will return an simple TXT file.
- EXIF: will return a simple TXT file a similar as possible to the
ExifTool project.
For examples:
Will create a file c:/toto.xml as result
java -jar MetaDataSpr.jar -I:c:/toto.jpg -O:c:/toto.xml -M:XML
java -jar MetaDataSpr.jar -I:c:/toto.jpg -M:XML
java -jar MetaDataSpr.jar -I:c:/toto.jpg
Will create a file c:/toto.txt as result
java -jar MetaDataSpr.jar -I:c:/toto.jpg -O:c:/toto.txt -M:EXIF
java -jar MetaDataSpr.jar -I:c:/toto.jpg -M:EXIF
java -jar MetaDataSpr.jar -I:c:/toto.jpg -M:TXT
Will create a file c:/temp/xx.txt for each JPG file in c:/temp as result
java -jar MetaDataSpr.jar -I:c:/temp/ -M:EXIF
java -jar MetaDataSpr.jar -I:c:/temp/ -M:TXT
Will create a file c:/temp/xx.txt for each JPG file in c:/temp as result.
Using 4 threads.
java -jar MetaDataSpr.jar -I:c:/temp/ -M:EXIF -T:4
If you get an out of memory error you can do:
java -Xms128M -Xmx512M -jar MetaDataSpr.jar ...
Caution to Upper/Lower cases in the Xms and Xmx options.
Xms: minimum memory that can be used.
Xmx: maximum memory that can be used.
-------------------------------------------------------------------------------
3. Known bug or issues
A lot for sure, still in alpha.
Some picture with odd Meta Data structure may not work at all.
You can send me reports of images that does not work.
Reading the mdt/Todo class may help you with the known bugs.
Most of bugs are are for Nikon tags right now.
-------------------------------------------------------------------------------
4. Historic
v0.4 Alpha : First release (2009 Mai 10)
- Canon meta data (all cases) should work at 95%
- Exif meta data should work at 90%
- TIFF (or Exif IFDx) meta data should work at 90%
- GPS meta data should work at 99%
- IPTC meta data should work at 95%
v0.5 Alpha : Second release (2009 Mai 16)
- Recoded the Exif engine for more efficient reading
- Added exception every where
- OutPut (Txt/Exif) will no more show empty directory
- Canon meta data
- Changed a label for Custom 10D
- Corrected an error in FileInfo parser
- adjusted some parser for better speed
- Will no more read twice a tag (idfX issue)
- So X and Y Resolution should be more accurate for TIFF
- GPS meta data
- Better decoration of latitude / longitude
- Removed coordinates and Timestamp Java type
- Casio (type1 and 2) meta data should work at 95%
- FujiFilm meta data should work at 90%
v0.6 Alpha : Third release (2009 June 16)
- Reorganized the Spring imports. Each directory now handle its
own files.
- Began the Nikon directory (type1, 2 and '3').
Restriction for coded tag : will stay that way until I
understand how to decode them.
Nikon should work at 50%.
- Corrected a big bug in SignedShort
- Added easy constructors for rational
- Changed the MarkerRule behavior and added ByteRule
- Upgraded ExifSegment analyze for IParser length (will
be more accurate and consume less memory)
- Changed the type definition for all Tags.
Impact is heavy on Spring declaration, but make things more
easy (declarations may change again with Spring 3.0)
- Updated Canon1D custom function parsing
- Changed the Run.class for better handling
v0.7 Alpha : Fourth release (2009 June 28)
- Nikon should work at 65%.
- Removed a System.out.println in Canon (forgot it in previous
release)
- Added better handling for rational with a zero denominator
- Coded the masked tag for Nikon (flash, lensdata, ...)
- Removed classes / interfaces XxxMakerTag and XxxOffsetTag
in order to simplify code. Impacted Spring files.
- Removed the notion of group, this may come back later but
was not used
- Removed the preview tag for now, may come back later
- Removed trace log in tag constructor since there is a Spring
option for that
- Centralized all parsing / reading of type into one method
(UtilsType.readValue). This corrected a bug in IndexedParser
- Added checks while parsing array values
- Added bench info for time and memory consumption
- Optimized memory usage for tag. Will only keep byte
representation if needed.
- Moved name property and getDescription method into
AbstractObject class.
- Changed type of bundle property for AbstractObject into
HierarchicalMessageSource
v0.8 Alpha : Fifth release (2009 july 24)
- Completed some Nikon tags and decorator
- Corrected an error with Exif User comment not showing
properly
- Corrected an error with TagContainer counting (error due
to masked type)
- Olympus should work at 90% (see new result file)
- Changed method getMessage in order to use ... instead
of Object[]
- Corrected possible infinite loop for Canon Custom Function 2
- Replaced project URL (https -> http)
- Changed IPTC segment parser for better handling of tags
- IPTC Digits works better now (Urgency and Envelope priority)
- IPTC Added a decorator for Category (regarding specs)
- Changed all Parser behavior for better handling. Should
prevent two bugs that popped up in Olympus parsing.
- Renamed TYPE_LONG_UNSIGNED and TYPE_LONG_SIGNED into
TYPE_UNSIGNED_LONG and TYPE_SIGNED_LONG for consistency.
- Added a new file in release that will contained
- detailed camera list used for testing
- % of tag found, ok, ko
This mechanic should prevent regressions.
- Corrected casio2.previewimage declaration in spring
- Corrected issue with FacePositions in Fujifilm
- Classes used for test/generation have been moved to an
other project
v0.9 Alpha : Sixth release (2009 nov 25)
- Synchronization with ExifTool 7.98
- Canon tags updated (added 7D and EOS-1D Mark IV, split
PowerShotCameraInfo)
- Casio tags updated (new tags)
- TIFF (label adjustment)
- FujiFilm (label adjustment)
- Olympus (bug corrected and label adjustment)
- Corrected bugs with PowerShots, better recognition for Canon
- Corrected Typo with IDF_
- Added Sony tags (works at 95%).
- Added Panasonic tags (works at 95%).
- Changed the Decorator pattern for all tags
- Changed the getType method for ITag
- Moved getValueAsXxx from Decorator to ITag
- Corrected an error in Rational for 0 value (represented as
NaN)
- Adjusted TestElment (used for Result File) in order to be
more efficient with numbers.
- Added Windows string decorator (for IDF-Xp...)
- Re-organized Tags classes and interfaces
v0.10 Alpha : Seventh release (2010 Jan 09)
- Pentax added
- But does not work at all with istD picture and some devices
- Kodak added
- But does not work with all kodak devices (Type 8 & 10)
- Some Sony devices are now better analyzed (since they were
using olympus directory)
- Changed dependencies, using Spring 3.0 release
- Removed bean id when not necessary
- Changed the way tags are linked (for canon afinfo and
afinfo2)
- Changed some interfaces for easier code reading
- Corrected a bug in computation of tag length
- Added -GC option in order to activate or not memory usage.
I added this because the cost of memory usage is upon
execution time.
v0.11 Alpha : Height release (2010 Fev 14)
- Minolta added.
- Corrected a bug with Kodak type discovery.
- Added the fact that KodakBordersIFD, KodakEffectsIFD and
MetaIFD are not analyzed.
- Added a lot of images for better testing.
- Added a MetaDataSpr segment for keeping track of
information such as file name, date of analyze and
time used for analyze.
- Changed completely parser philosophy
- Will speed up treatment of data a lot.
- Will consume less memory (twice less).
- Uniformization for logging message in all parser.
- Updated some Canon decorator (this explain the small raise
for this family of tags).
- Synchronization with ExifTool 8.10
- Except for Nikon
v0.12 Alpha : Ninth release (2010 March)
- XMP family tag added.
- Change ITag interface/class hierarchy
- Note: I could not test all XMP tags yet ...
- Added multi-thread treatments (-T:x option)
- As a result, access to Spring context is now
synchronized when needed (prototype object)
- This gives a small speed up (very small since the
slowest part of the code is the instantiation time
for marker note and directories)
- Note that time of analyze is WRONG when using multi-thread
- In order to have more readable logs, added file name in
log line
- Updates in Spring file for better centralization of spring
options.
- scope and lazy-init MUST be used direcly for each tag
- Used default-lazy-init for better reading
- Using Spring 3.0.1 (instead of 3.0.0)
- Made a common bundle for words that are used more than once.
- Some decorator were adjusted
-------------------------------------------------------------------------------
5. Result file for Alpha 0.12
View more informations in Result-*-.xls file.
Marker OK Error Missing NbImage Time(ms)
Canon 95,77 3,90 0,33 81 134
Olympus 97,05 2,79 0,16 20 98
Nikon* 80,09 9,57 10,34 120 74
Fujifilm 97,34 2,66 0,00 12 31
Casio 94,19 4,80 1,01 29 31
Sony 97,49 1,77 0,74 62 41
Kodak ** 88,63 2,02 9,35 58 28
HP ** 100,00 0,00 0,00 1 42
Gps 95,38 4,62 0,00 1 54
Panasonic 98,56 1,44 0,00 58 31
Pentax ** 69,82 3,32 26,87 48 37
Minolta 95,81 3,89 0,30 92 49
Others 85,25 14,75 0,00 4 21
Total 91,95 4,27 3,78 586 51,59
Date 2010-02-14
MetaDataSpr Alpha 0.11
ExifTool 8.10
* A lots of information are crypted into Nikon MetaData.
** Not fully coded yet
Following tags are not analyzed:
ExifTool JFIF System ICC
Composite FotoStation CanonVRD IPTC2
Photoshop File2 File MPImage2
Adobe KodakEffectsIFD KodakBordersIFD MPImage1
MetaIFD FlashPix MPF0