2

I have a load of PNG's that my wife wants to keep that have been captured from our Baby Monitor. The files are named for the date they were captured:

yyyymmdd_hhmmss.png

Unfortunately there is no DateTaken saved to the image and I would like to add it for filing purposes and to satiate the OCD monster growling in my chest.

I've reviewed a few posts on here using the ExifTool command line but none of them seem to detail how to set the "date taken" property (as shown in windows explorer and lightroom etc) although as I understand it its defined in the exif as: Creation Time??? (maybe).

I have tried many combinations of the following with no success. (Date Taken stays blank).

exiftool "-creationTime=-timecreated" *
exiftool "-creationTime<EXIF:DateCreated" *

In desperation to see if anything is actually happening:

exiftool "-creationTime=now" *
exiftool.exe "-DateTimeOriginal>FileModifyDate" *
exiftool -v "-FileModifyDate>AllDates" *

I apologise; there is something so simple I am missing but after trawling through google results and numerous posts on here I am no closer.

7

As long as you have the filename set as you mention, the command you want to use is
exiftool "-PNG:CreationTime<Filename" FileOrDir

As @cmason mentions, PNG doesn't support the EXIF standard. Exiftool and Exiv2 do have a workaround, but it isn't widely supported. So EXIF tags won't be set by other programs unless you set them yourself with Exiftool or Exiv2.

Date Taken is a Windows property, not a metadata tag, and in the case of PNG files, it is set from the PNG:CreationTime tag.

To set the Windows Date Take property in a PNG file to something else, you can use this command, replacing the time stamp appropriately:
exiftool -PNG:CreationTime="2017:01:10 10:45:01" FileOrDir

Edit: Just some notes on why your previous commands didn't work.
exiftool "-creationTime=-timecreated" * The equal sign assigns values. So in this case, you're assign the CreationTime tag the value of -timecreated. If you wanted to copy the TimeCreated tag, you would have first had to drop the dash in front of -timecreated (only used at the very beginning to indicate a tag operation) and then used the tag copy operation (less/greater than symbol < or >) e.g. -creationTime<timecreated or -TimeCreated>CreationTime.

exiftool "-creationTime<EXIF:DateCreated" * and exiftool.exe "-DateTimeOriginal>FileModifyDate" * Properly formatted, but as mentioned, PNGs doesn't support EXIF tags (DateTimeCreated is normally an EXIF tag though it can also be an XMP tag). There should have been a "No writable tags" error message.

exiftool "-creationTime=now" * "Now" is an Exiftool pseudo-tag for the current date/time. But the equal sign is setting CreationTime to the value now, not the DateTime of now. The proper command would have been "-CreationTime<Now" .

exiftool -v "-FileModifyDate>AllDates" * Properly formatted, but again it's a problem with PNGs lack of support for EXIF data. AllDates is an Exiftool shortcut for three EXIF tags: EXIF:DateTimeOriginal, EXIF:ModifyDate, and EXIF:CreateDate.

Edit 2: At some point there appears to have been a change in the way Windows reads PNG metadata. It seems to stop reading at the PNG IDAT chunk even if there is data beyond it, which is allowed by the spec. PNG:CreationTime may not show up properly when written by exiftool. See this Exiftool Forum post.

Edit 3: In exiftool ver 10.71, Phil Harvey changed the way exiftool wrote the PNG:CreationTime tag to follow the PNG RFC-1123 format (Link Link). Windows doesn't seem to be able to read that format. This change as been reverted as of ver 11.13 with an option to enforce the PNG spec with the -api StrictDate option.

1

PNG does not support EXIF in its file format. There are ways to add certain data, knowns as 'chunks' but I don't see 'date taken' specifically in the standard.

My recommendation is to convert all to JPG, then use EXIF tool or Lightroom to add date taken info. If you use a Mac, there is most likely an Apple script available.

  • Thanks for the reply. I can set the date taken property individually in the details section of the properties dialog in Windows. I did a comparison before setting it and after setting it and looking at the meta data in the png its the creation time value that gets set on the PNG? Is it not possible to set that value? I just don't know how to reference that value to set it. Thanks again. Failing that I shall convert to JPG. – Chris Jan 10 '17 at 15:48
  • The PNG Development Group is at this moment debating the format of a proposed PNG EXIF chunk. Note that PNG already defines a "Creation time" keyword for storing the creation date in a PNG text chunk. ImageMagick/GraphicsMagick already support preserving the entire EXIF profile (or other profiles such as IPTC) in a PNG zTXt chunk and retrieving it; i.e., the EXIF profile will survive a round-trip from JPEG to PNG and back. – Glenn Randers-Pehrson Jan 11 '17 at 14:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.