Commit Graph

147 Commits

Author SHA1 Message Date
clanmills
d3c2b99385 #1297 Fix submitted. 2017-06-11 11:56:20 +01:00
Robin Mills
77616c3204 #1289 Thanks to Asdiel (AlienSkin) for reporting this and providing a test file. Thanks to Ben for investigation and patch. 2017-04-14 19:42:53 +00:00
Robin Mills
6d5c2c3256 Getting ready to release v0.26 2017-03-08 20:42:28 +00:00
Robin Mills
012c544704 #1268 Fix submitted. Ben and Robin both discovered and fixed this independantly with the same fix! 2017-02-16 18:23:40 +00:00
Robin Mills
dd4faaf831 #1277 Fix submitted. Thank You to Ben for reporting this and providing a patch. 2017-02-14 20:07:12 +00:00
Robin Mills
fe6c71d0fa #1108 exiv2 -pR to dump type == tiffIfd 2016-12-04 12:18:43 +00:00
Robin Mills
49fbd1d761 #1108 Add support to dump MakerNote IFDs with exiv2 -pR 2016-12-04 06:02:44 +00:00
Robin Mills
81265684f0 #1108 Fixed bugs in printStructure(kpsRecursive) handling of RATIONAL data. 2016-11-12 22:08:10 +00:00
Robin Mills
dd39d165e2 #1247 Fix Linux/GCC compilation warning. Added Hanno's file to the test suite. 2016-10-21 19:19:06 +00:00
Robin Mills
021bf5c237 #1247 Thank You Hanno for reporting this and providing a patch. 2016-10-21 17:44:19 +00:00
Robin Mills
a057af1616 #1244. Removing experimental APIs introduced by r4637. I submitted those APIs just to retain the code somewhere. I have no plan to release such as API. 2016-10-17 16:32:58 +00:00
Robin Mills
f5956d5db2 #1230 Fixes to read tiff with web-ready. Includes the BasicIo expiremental API readUnmarked() and markRead() which I will remove later. 2016-10-17 15:48:42 +00:00
Robin Mills
67efb34461 #1243. Correction to r4627 2016-10-13 12:05:39 +00:00
Robin Mills
2e9138cf91 #1243 Work-in-progress. Still to add code to writeMetadata for icc profiles. 2016-10-13 11:03:39 +00:00
Robin Mills
5f1d52e497 #1230 Added stdin-test and fixing issue identified by the test. 2016-09-25 22:43:40 +00:00
Robin Mills
b46cac7790 #1126 Fixes submitted for msvc2003 2016-09-16 05:33:40 +00:00
Robin Mills
1bea0c6aeb #1108 Better string formatting (and associated test/data changes). Tweaks to code layout for r4497. 2016-09-15 14:09:43 +00:00
Robin Mills
5edc759cc9 #1074 For discussion see: http://dev.exiv2.org/issues/1074#note-23 2016-09-14 10:02:51 +00:00
Robin Mills
9ff2224fd7 #1074. Rollback r4479 which has inflicted a lot harm on the test harness. 2016-09-11 15:31:28 +00:00
Robin Mills
3aaebf50f7 #1074 Added ICC support to tiffimage.writeMetadata(). pngimage.readMetadata() is not complete. 2016-09-09 15:18:59 +00:00
Robin Mills
5f9807cbef #1216. Rollback r4448/6/2/1 r4439/38 to restabilize test suite on trunk. r4449 is copy of r4448 to branches/develop 2016-08-30 16:05:45 +00:00
sridharb
8a8ec67136 This is mainly a fix for #1206, but also interprets missing Canon Exif
Tags in exiv2 with the help of Phil Harvey's exiftool (see
http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Canon.html).

Even with these changes (toward #1204 and #1205), exiv2 lags behind
exiftool in some areas of interpretation of Canon tags. Ideally, a
catch-up effort to bring the code in source: canonmn.cpp in line with
lib/Image/ExifTool/Canon.pm. v10.25 of exiftool was used as reference
for this change.

#1206 seeks to address the fact that when Canon does not have data for
certain tags, they use specific default values in those fields. These
default values need to be ignored and not displayed. This change
brings this feature to exiv2, something that already exiftool does.

With regards to implementation, the struct TagInfo in source: tags.hpp
is extended with four new fields.

The first field is a bool that if set to true (default false), denotes
that this field has ignorable default values.

The second field is the default value that needs to be ignored. This
can be of four types (String, Long, Float, Rational). These four types
were chosen as they had conversion functions in the Value class.

The third field is the comparison type (default equal_to). There are
six comparison types possible (equal_to, not_equal_to, less,
less_equal, greater, greater_equal). This is the comparison applied to
the value stored in the tag's field and the default value specified
above. For e.g. if the value in the tag Exif.CanonCs.RecordMode is -1,
then it needs to be ignored.

The fourth field is the data type (default Long). This could have been
guessed from the type of the second field, but that would necessitate
making this structure into a template calling for changes in multitude
of files.

Usage: In source: canonmn.cpp, several exif tags now have ignorable
default properties. I will list a few examples.

1. Exif.CanonCs.FocusMode:        TagInfo(0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsFocusMode)),

There are no changes - i.e. this is an example of how the TagInfo
structure was being populated.

2. Exif.CanonCs.RecordMode:        TagInfo(0x0009, "RecordMode", N_("Record Mode"), N_("Record mode setting"), canonCsId, makerTags, signedShort, 1, EXV_PRINT_TAG(canonCsRecordMode), true, s_1_),

Take a look at the two new arguments. The first one (true) specifies
that there is a default value that can be ignored. The second one s_1_
specifies the value (-1, in this case) to be ignored.

	const UShortValue CanonMakerNote::s_1_(65535, unsignedShort); // Till bug is resolved

Note s_1_ is temporarily having the value 65535 till #1203 that causes
signedShorts to be interpreted as unsignedShorts is resolved.


3. Exif.CanonSi.TargetAperture:         TagInfo(0x0004, "TargetAperture", N_("Target Aperture"), N_("Target Aperture"), canonSiId, makerTags, unsignedShort, 1, printSi0x0015, true, us0_, TagInfo::less_equal),

Note the third argument TagInfo::less_equal. This combined with the
second argument us0_ (the number 0) signifies that any values in this
tag that are less than or equal (<=) to 0 should be ignored.

4. 		TagInfo(0x0028, "ImageUniqueID", N_("Image Unique ID"), N_("Image Unique ID"), canonId, makerTags, asciiString, -1, printValue, true, s0x16_, TagInfo::equal_to, TagInfo::String),

The previous examples have all been of Long type. This shows a case
where the default value is a string.

	const AsciiValue CanonMakerNote::s0x16_("0000000000000000");

Once these tag values have been defined, the actual mechanics of
ignoring these default values happens in Image::exifData().

Before the exifData is returned, we loop through the data, ask the
data whether it needs to be ignored (which in turn checks its
underlying tagInfo and compares it with the default value, if
specified) and if so, deletes that element.

A compile-time switch called EXV_DONT_IGNORE_UNDEFINED which when set
to a non-zero value will cause the behavior to revert back to the
original where all values are reported irregardless of the fact that
they need to be ignored.
2016-08-26 05:36:05 +00:00
draekko
6f7b3ba8f7 #1199 removed convenience converstion for iptc to xmp, apps should handle it directly since webp doesnt support iptc. 2016-08-18 10:10:44 +00:00
Robin Mills
104eb6b7fe #1199 Fixing MSVC build breaker involving long/uint64_t conflict. Minor changes to behaviour of Internal::binaryToHex() 2016-08-13 21:26:16 +00:00
draekko
fe4f6f07f1 #1199 update to binaryToHex, should remove compile warnings and fix extra space padding. 2016-08-13 20:37:24 +00:00
Robin Mills
b09c2049a6 #1199 Fixing build breaker introduced by r4369 2016-08-13 13:28:59 +00:00
draekko
bcaa22ae6f #1199 removed warnings in stringToHex, enabled iptc support for WebPImage. 2016-08-13 02:23:50 +00:00
draekko
71fd0ae96e #1199 (as was discussed) moved WebPImage::debugPrintHex to Internal::binaryToHex 2016-08-12 11:46:51 +00:00
draekko
85cc2f745d #1199 Fixed crash with iptc by disabling it, updated decodeChunk to do better header checks, added hexdump function. 2016-08-11 19:47:48 +00:00
Robin Mills
b3f107bd8c #1199 WebP Support (work in progress). Thank You to Ben for the patch. Thanks to Gilles for encouragement. 2016-08-08 14:33:49 +00:00
Robin Mills
664af57e10 #1034 Added samples/toexv This is a first step to write exif metadata to memory to send to a web service. 2016-04-29 19:20:30 +00:00
Robin Mills
06eabfdd88 #1074. jpgimage.cpp ICC support (Work in Progress) 2016-03-23 17:06:33 +00:00
Robin Mills
e7b804f3f5 #1108 Refactored static indent(depth) from png/tiff/jpeg to Internal::indent(depth) 2016-03-18 07:48:15 +00:00
Robin Mills
6e19d043ef #1108 Added IPTC parser for tiff. 2016-03-17 22:14:21 +00:00
Robin Mills
fd5e983746 r1108 Recursively dump an image (exiv2 -pR file...) 2016-01-05 14:39:49 +00:00
Robin Mills
db4be31b6f #1130. Thank You Jakub for reporting this. 2015-10-29 19:33:34 +00:00
Andreas Huggel
a57317f685 Some API policing 2015-06-08 14:39:59 +00:00
Andreas Huggel
006625e116 Removed helper functions binaryToString() and stringFormat() from the API and from class Image and made them internal helpers. Renamed type printStructureOption_e to PrintStructureOption to conform with the common naming convention. 2015-05-10 09:37:34 +00:00
Robin Mills
ee1ca29d09 #1073 test/tiff-test.sh rewritten to no longer require external utility exifprobe 2015-05-02 13:03:31 +00:00
Andreas Huggel
fd80993ab0 Updated copyright notice. 2015-05-02 11:55:40 +00:00
Robin Mills
2712082555 #922 Rollback r3771. Very troublesome feature. bugfixed #922 is looping Linux. PNG Has endian issues on MM/PowerPC 2015-05-01 09:16:31 +00:00
Robin Mills
2f375e8f02 #922. Adding to the test suite. 2015-05-01 08:08:15 +00:00
Robin Mills
f343a21e21 #922. Mac fix for Image::stringFormat() 2015-05-01 06:54:33 +00:00
Robin Mills
b2be263206 #922 Fixing Image::formatString() on Windows 2015-05-01 06:36:50 +00:00
Robin Mills
5aec2c4957 #1069. Make video a build option (msvc/autotools/cmake). Default is not to build video or webready. 2015-04-30 15:31:18 +00:00
Robin Mills
84bf485ebe #922. Fixing -pS and -pX on MSVC. 2015-04-28 19:19:59 +00:00
Robin Mills
b1ad7a925c #922. Fixing MSVC warnings. 2015-04-27 21:33:14 +00:00
Robin Mills
fd1852da84 #922. Fix Linux build breaker and MSVC compilation warnings. 2015-04-27 21:25:30 +00:00
Robin Mills
40ffba6033 #922 -pS and -pX support for TIFF. Added formatters to Image class and use them from {jpg/png/tiff}image.cpp 2015-04-27 20:07:14 +00:00
Robin Mills
f6c79a0d20 #922. Work in progress on options -pS and -pX 2015-04-24 19:51:45 +00:00