% exiv2 10.png
File name : 10.png
File size : 17213 Bytes
MIME type : image/png
Image size : 120 x 81
10.png: No Exif data found in the file
Exit 253
% exiv2 -pe 10.png
% exiv2 -pS 10.png
STRUCTURE OF PNG FILE: 10.png
address | chunk | length | data | checksum
8 | IHDR | 13 | ...x...Q.... | 0x96a5f57b
33 | tEXt | 31 | create-date.1959-04-17T15:21:0 | 0x06bc1396
76 | tIME | 7 | ....... | 0x070fddc9
95 | IDAT | 8192 | x.d.I.%]r...g.....z5.C.S..#).. | 0xe830cf4f
8299 | IDAT | 8192 | REQ.Q.BD,.ct....B..p...39.%*.3 | 0x880848c3
16503 | IDAT | 434 | n..&.#...8.."..{....C.&.#.W... | 0x54301f6c
16949 | eXIf | 240 | MM.*.................V........ | 0x8fdeeac2
17201 | IEND | 0 | | 0xae426082
I actually noticed the problem after importing the file into DigiKam 7.0, and reported it on their mail list.
Do you think you can publish an update that the DigiKam project could use?
Thank you for all your work!
Rainer
PS. Here is my PNG file 10.png. I own the copyright and you have my permission to use it for any purpose within the Exiv2 project.
Exiv2 supports Exif, IPTC, XMP and ICC metadata. You haven't hit a problem. Your file contains PNG metadata which is not in one of those four formats.
As you've realised, you can see the metadata embedded in the tEXt chunk. In preparation for retirement (I was 70 in January), I have written a book Image Metadata and Exiv2 Architecture https://clanmills.com/exiv2/book.
In Chapter 1 Image Formats, I discuss each of the about 20 image formats: JPEG, TIFF, PNG and others. The PNG specification provides a feature 11.3.4 Textual information. This is discussed in the book: https://clanmills.com/exiv2/book/#PNG.
There is a program tvisitor provided in the book. It's a more comprehensive version of exiv2 -pS. Here's tvisitor at work on your file:
1100 rmills@rmillsm1:~/gnu/github/exiv2/0.27-maintenance $ tvisitor -pR ~/Desktop/111037227-7d8c4a80-8423-11eb-8565-ec1e98008727.png
STRUCTURE OF PNG FILE (MM): /Users/rmills/Desktop/111037227-7d8c4a80-8423-11eb-8565-ec1e98008727.png
address | chunk | length | checksum | data
8 | IHDR | 13 | 0x96a5f57b | ___x___Q..___
33 | tEXt | 31 | 0x6bc1396 | create-date_1959-04-17T15:21:02
76 | tIME | 7 | 0x70fddc9 | .......
95 | IDAT | 8192 | 0xe830cf4f | x.d.I.%]r...g.....z5.C.S..#)..(...I..&`.
8299 | IDAT | 8192 | 0x880848c3 | REQ.Q.BD,.ct....B..p...39.%*.3..Y-Y..R.u
16503 | IDAT | 434 | 0x54301f6c | n..&.#...8.."..{....C.&.#.W...g..4...Td.
16949 | eXIf | 240 | 0x8fdeeac2 | MM_*___._..._.___.___V.._.___.___^.(_.__
STRUCTURE OF TIFF FILE (MM): /Users/rmills/Desktop/111037227-7d8c4a80-8423-11eb-8565-ec1e98008727.png:16957->240
address | tag | type | count | offset | value
10 | 0x011a Exif.Image.XResolution | RATIONAL | 1 | 86 | 72/1
22 | 0x011b Exif.Image.YResolution | RATIONAL | 1 | 94 | 72/1
34 | 0x0128 Exif.Image.ResolutionUnit | SHORT | 1 | | 2
46 | 0x0132 Exif.Image.DateTime | ASCII | 20 | 102 | 1959:04:17 15:21:02
58 | 0x0213 Exif.Image.YCbCrPositioning | SHORT | 1 | | 1
70 | 0x8769 Exif.Image.ExifTag | LONG | 1 | | 122
STRUCTURE OF TIFF FILE (MM): /Users/rmills/Desktop/111037227-7d8c4a80-8423-11eb-8565-ec1e98008727.png:16957->240
address | tag | type | count | offset | value
124 | 0x9000 Exif.Photo.ExifVersion | UNDEFINED | 4 | | 0232
136 | 0x9003 Exif.Photo.DateTimeOriginal | ASCII | 20 | 200 | 1959:04:17 15:21:02
148 | 0x9004 Exif.Photo.DateTimeDigitized | ASCII | 20 | 220 | 1959:04:17 15:21:02
160 | 0x9101 Exif.Photo.ComponentsConfigura.. | UNDEFINED | 4 | | ..._
172 | 0xa000 Exif.Photo.FlashpixVersion | UNDEFINED | 4 | | 0100
184 | 0xa001 Exif.Photo.ColorSpace | SHORT | 1 | | 65535
END: /Users/rmills/Desktop/111037227-7d8c4a80-8423-11eb-8565-ec1e98008727.png:16957->240
END: /Users/rmills/Desktop/111037227-7d8c4a80-8423-11eb-8565-ec1e98008727.png:16957->240
17201 | IEND | 0 | 0xae426082 |
END: /Users/rmills/Desktop/111037227-7d8c4a80-8423-11eb-8565-ec1e98008727.png
1101 rmills@rmillsm1:~/gnu/github/exiv2/0.27-maintenance $
The Exiv2 project is alive and well, however there is nobody actively developing PNG support in Exiv2. I intended to retire in January, and have been persuaded by darktable to add bmff support for CR3, HEIC and AVIF files. Exiv2 v0.27.4 RC1 will be released this week. v0.27.4 is on track to ship as scheduled on 2021-05-22. #1018 (comment)
We had a Team Exiv2 meeting on 2021-02-27 to discuss the future. We agreed to investigate moving Exiv2 into the KDE organisation. I've agreed to "yet one more final release" of v0.28 on 2021-09-15. #1466 (comment)
I assume DigiKam will update their product to take advantage of Exiv2 v0.27.4. In the past, I have made a considerable effort to provide support and meet special demands from that project. As no words of appreciation were offered for hundreds of hours of effort, I will never again undertake development at their request.
I hope somebody will volunteer to manage Exiv2 in future. A future maintainer will determine priorities. Will PNG Textual information be supported? You are welcome to join the team and develop the necessary code.
Hello Robin,
to be honest, I had not understood that the date information in my PNG file isn't Exif data. Thanks for pointing that out.
I've realised that there is probably an easy workaround for my problem: If I use exiv2 instead of exiftool to store the date information in my PNGs, I expect that DigiKam will recognize it.
I'm not yet a long time DigiKam user, and have only got to know exiv2 less than 24 hours ago, but I am already impressed with what the project provides and how it got there. Today, I've learned how to build exiv2, and have begun to study your book, which is certainly a useful resource.
Thank you for responding.
Good luck, Rainer
Thanks for the feed-back. The book is very detailed because its purpose is to conserve my knowledge. The aim of the book is to ensure that Exiv2 survives or inspires a new library. It comes with a guaranteed cure for insomnia.
Please understand that when darktable asked please add bmff before you retire, they were asking for 500+ hours of my life. Unlike digiKam, I believe they will show appreciation.
The project to move Exiv2 under the KDE umbrella will probably involve similar demands on my time. I wanted out of here in January. Perhaps I will escape in September.
An important precursor for PNG (and other Families not in Exif/IPTC/XMP) is the Unified Metadata Container. This has now been studied #1505 and I regard this a must have feature for v1.00.
Although I'll set the milestone of v1.00 for this issue, whether we implement PNG Textual information support in v1.00 will depend on have a contributor to accept the challenge. I hope that when the Unified Metadata Container is implemented in Exiv2, PNG support is provide to prove that the code to add a new family does work correctly.
Textual information, such as author information, creator software,
and a description can be stored in a PNG's tEXt, zTXt, and
iTXt chunks, [1].
libexiv2 can extract EXIF information out of PNGs but does not
support PNG Textual Information, see [2], however Qt's PNG handler
makes this information readily available as textKeys.
[1] https://www.w3.org/TR/PNG/#11keywords
[2] Exiv2/exiv2#1343
Textual information, such as author information, creator software,
and a description can be stored in a PNG's tEXt, zTXt, and
iTXt chunks, [1].
libexiv2 can extract EXIF information out of PNGs but does not
support PNG Textual Information, see [2], however Qt's PNG handler
makes this information readily available as textKeys.
Unfortunately, the "Description" key is used by QImage to keep
track of the QImageIOHandler's Description and overrides the actual
PNG "Description" text, making it useless.
[1] https://www.w3.org/TR/PNG/#11keywords
[2] Exiv2/exiv2#1343
Textual information, such as author information, creator software,
and a description can be stored in a PNG's tEXt, zTXt, and
iTXt chunks, [1].
libexiv2 can extract EXIF information out of PNGs but does not
support PNG Textual Information, see [2], however Qt's PNG handler
makes this information readily available as textKeys.
Unfortunately, the "Description" key is used by QImage to keep
track of the QImageIOHandler's Description and overrides the actual
PNG "Description" text, making it useless.
[1] https://www.w3.org/TR/PNG/#11keywords
[2] Exiv2/exiv2#1343