I am on Windows 7 and I can't find how to add the author or any other properties for a PNG file I created. The only thing I can modify is the shooting time which I don't need. Why is this so? You can easily do it with JPEG files but not with PNG. What can I do?
Edit: This answer is out of date. As of July 2017, PNG supports EXIF chunks.
exiftool can edit PNG chunks, but Windows explorer apparently still does not support PNG chunks. See comments by posfan12 and lukeuser below.
doesn't formerly didn't support EXIF metadata (when the question was asked)
While PNG can embed metadata chunks, standard metadata formats such as EXIF, IPTC, or XMP are not supported for PNG. See the following resources:
- Photo.SE: Is “Date Taken” Exif data possible on .PNG file, and is it possible to copy “Date Modified” to “Date Taken”?
- StackOverflow: Does PNG contain EXIF data like JPG?
There are several applications and software libraries that can read and write embedded text chunks, including on Windows:
- Server Fault: What software can I use to read png metadata?
- Photo.SE: How do I go about editing the metadata of a PNG file?
"Author" is a reserved keyword for
zTXt chunks, but PNG readers are not required to respect reserved keywords for those chunks. The Windows built-in shell extension that displays image information does not fully support "Author" keywords in
zTXt chunks. Even if you embed an "Author" key in the text chunk(s), there's no guarantee a standard Windows user will be able to see it.
Edit: Additionally, multiple chunks can exist, using the same keyword(s) again. From the link to libpng.org above,
Author The name of the author of the image. If the original image were a painting or other nonelectronic medium, both the original artist and the person who scanned the image might be listed.
Thus, the authors of the PNG specification intended a loose, flexible way of embedding all sorts of information. But as implemented in the 1990's, the PNG specification is not sufficient to write robust software that uses, reads, or relies on more metadata than you're seeing.
Also from the same link to libpng.org above, "Unicode UTF-8 character set was one of the items in the design of PNG that was voted down." UTF-8 was not well supported by any of the major system libraries and operating systems at the time. Because the designers of PNG wanted to rely on stable, tested technologies when they authored the PNG specification, they made the reasonable decision to not use it. Thus, the
tEXt chunks use the Latin-1 (ISO/IEC 8859-1) character set. The
iTXt chunk was eventually added, that uses the Unicode character set, sort of: the keywords in the
iTXt chunks are encoded in Latin-1 character set; the values in the chunks are Unicode. This was done so that existing PNG implementations written before the introduction of the
iTXt chunk could read the chunk headers and keywords, and skip over text they couldn't parse, read, or render.
Ultimately, because the PNG specification did not enforce more metadata tags than it did, authors of PNG software had no guarantee that tags such as "Author" would be parsed and read by other PNG implementations. The lack of widespread implementation of such tags meant that there wasn't a critical mass of PNG images that had the data, and thus new PNG software and new versions of existing PNG software had no reason to write software for ill-defined tags, and the cycle perpetuates itself. Thus we are in the state we are in today: loose specification of the PNG metadata format (partly driven by no viable way to represent non-Western character data) led to lack of demand for support for tags such as "Author".
How to add author and other properties to png files?
It is always possible to store metadata in a sidecar XMP file. For example, XnViewMP will create .xmp file if I try to assign a colour label to PNG file (and then "update files from catalog" because XnViewMP stores changed metadata in internal database first).
And it is indeed supported by other viewers like Adobe Bridge. You just will need to copy twice as much files when you transfer individual files.