Image-MetaData-JPEG

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

	$record is initialised with a fake $REFERENCE record A pointing
	to $this->{records}; so $this->search_record() returns A, and
	$this->search_record_value() returns $this->{records}. This
	should be added to the documentation!
	
	* lib/Image/MetaData/JPEG/Segment.pm (process_search_args): no
	arguments is now equivalent to (undef) instead of generating an
	error; all undef or "false" arguments are simply discarded. So,
	$this->provide_subdirectory() returns $this->{records}.

	* lib/Image/MetaData/JPEG/Tables.pm (%IFD_SUBDIRS): changed my mind
	again, the subdirectory corresponding to 'MakerNote' will be 
	'MakerNoteData', and will be specialised in 'MakerNoteData_format'.

	* lib/Image/MetaData/JPEG/JPEG_app1_exif.pl (get_Exif_data): the
	first level keys in the hash returned by get_Exif_data when $what
	is set to 'ALL' are now coincident with the sub-$what's, that is
	'ROOT_DATA', 'IFD0_DATA', 'SUBIFD_DATA', ... instead of 'APP1',
	'APP1@IFD0', 'APP1@IFD0@SubIFD', ... Documentation (both in .pod's
	and in the code) is still to be updated!
	
	* lib/Image/MetaData/JPEG/JPEG_app1_exif.pl (%WHAT2IFD): prefix
	'APP1' erased from values; setter/getter methods changed accordingly.

2005-02-08  Stefano Bettelli  <bettelli@cpan.org>

	* lib/Image/MetaData/JPEG/Record.pm (get_description): changed the
	sprintf format string from '%p' to '0x%06x' (really, I did not
	understand what %p was about).

2005-02-07  Stefano Bettelli  <bettelli@cpan.org>

	* lib/Image/MetaData/JPEG/Segment.pm (provide_subdirectory): extended
	to mimick search_record's arguments treatment; this method looks for
	a path of subdirectories from a given record list. All arguments are
	joined to form a path specification, which is followed, and the last
	directory (record list) is returned. An optional last argument may
	specify an initial directory for the search ($this->{records} is the
	defaults). If any subdir entry is not there, it is created on the fly.
	Updated: parse_ifd, parse_makernote, build_IFD_directory_tree.
	
	* lib/Image/MetaData/JPEG/Segment.pm (process_search_args): this
	private method processes the arguments for search routines, like
	search_record and provide_subdirectory. 1) a start directory is
	chosen by looking at the last argument: if it is an ARRAY ref it
	is popped out and used, otherwise the top-level directory (i.e.,
	$this->{records}) is selected; 2) a $keystring is created by joining
	all remaining arguments on '@', then this string is exploded into
	a @keylist on the same character; 3) the start directory and the
	@keylist is returned.

2005-02-06  Stefano Bettelli  <bettelli@cpan.org>

	* lib/Image/MetaData/JPEG/Segment_parsers.pl (parse_ifd): there is
	now a prediction and correction mechanism for the offsets in the
	interoperability arrays. The simple assumption is that the absolute
	value of offsets can be wrong, but their difference is always right,
	so, if you get the first one right ... a good bet is the address of
	the byte immediately following the next_IFD link. This mechanism is
	currently enabled only for MakerNotes (it might be able to read even
	MakerNotes corrupted by an arbitrary relocation).
	
	* lib/Image/MetaData/JPEG/Segment_parsers.pl (parse_ifd_children): 
	the code for parsing sub-IFD's was single out into this routine.

	* lib/Image/MetaData/JPEG/Segment_parsers.pl (parse_makernote): this
	routine was polished and uncommented; it now deals with every possible
	MakerNote format (because of the catch-all rule), even if sometimes
	it has a minimalist approach ... Information is made available in a
	subdirectory of APP1@IFD@SubIFD, named 'MakerNote_' + the selected
	format (so, there isn't any more any 'MakerNote' entry in IFD0@SubIFD);
	this subdirectory contains all parsed fields plus some "artificial"
	fields like 'ORIGINAL', 'SIGNATURE' and 'ERROR' (an human-readable
	explanation, if a parsing problem occurred).

	* lib/Image/MetaData/JPEG/Tables_makernotes.pl ($HASH_MAKERNOTES): 
	there is now a catch-all rule, a phantomatic binary makernote
	with very broad acceptance rules ... named _Unknown. In this way,
	all MakerNote data areas should be expanded into a subdirectory,
	even if their existence is still unknown.
	
	* lib/Image/MetaData/JPEG/Segment_parsers.pl (parse_IPTC_dataset): 
	this routine now starts with a size test: we need to have at least
	five bytes if the dataset header is to be read. This makes error
	messages more informative.
	
	* lib/Image/MetaData/JPEG/Segment_parsers.pl (parse_app1_exif): 
	increased the tolerance for thumbnails smaller than declared 
	to 10 (I have now an example of a valid thumbnail which should
	span 6352 bytes, but it spans only 6348 (= -4).

2005-02-05  Stefano Bettelli  <bettelli@cpan.org>

	* lib/Image/MetaData/JPEG.pm (get_next_marker): an old version
	of "Arles Image Web Page Creator" had a bug which caused the
	application to generate JPEG's with illegal comment segments,
	reportedly due to a bug in the Intel JPEG library the developers
	used at that time (these segments had to 0x00 bytes appended). It
	is true that a JPEG file with garbage between segments is to be
	considered invalid, but some libraries like IJG's try to forgive,
	so we try to forgive too, if the amount of garbage isn't too large ...

	* lib/Image/MetaData/JPEG/Segment_dumpers.pl (dump_app13): updated
	to dump the eight additional bytes for version 2.5

	* lib/Image/MetaData/JPEG/Segment_parsers.pl (parse_app13): adapted
	to check for all identifier in @$APP13_PHOTOSHOP_IDS, and to read
	some additional undocumented bytes (resolution info?) for version
	2.5 only, now saved in a root 'Resolution' record.

	* lib/Image/MetaData/JPEG/JPEG_app13.pl (provide_app13_segment): 
	use the first element of @$APP13_PHOTOSHOP_IDS as PhotoShop id
	string, $APP13_PHOTOSHOP_IDENTIFIER is no more.
	(is_app13_ok): just ask $id is found in @$APP13_PHOTOSHOP_IDS.

	* lib/Image/MetaData/JPEG/Tables.pm ($APP13_PHOTOSHOP_IDS): people
	they say this segment always starts with a specific string from
	Adobe, namely "Photoshop 3.0\000". But some old pics, with only
	non-IPTC data, use other strings ..., so now there is an array
	of possible identifier (the first one is considered the default)



( run in 0.978 second using v1.01-cache-2.11-cpan-5511b514fd6 )