Once again I find myself searching the internet to solve a particular problem that I seem to be the only one trying to solve, so I will share the problem here, and my solution, in hopes that it may help someone else.
In 1996, I purchased an Epson PhotoPC digital camera. At that time, no one had ever heard of a “digital camera.” I had to call it a “computer camera” when explaining what it was to folks who asked.
Between 1996 and 2000 I used this camera and took thousands of photos as I travelled for work, sharing them on my sites DisneyFans.com (theme parks) and AtTheFaire.com (renaissance festivals). Today, several camera models later, I have well over 100,000 photos online.
In the early days of digital photography, there was not yet a standard to how cameras were going to embed information about the photo inside the JPEG file — such as the date and time the image was captured. With no displays on the early cameras, the only way camera time was set was through a serial cable hooked up to a PC or Mac. In the case of the Epson PhotoPC, it used some form of JFIF header information for the date/time. If you try to view a picture taken by the EpconPC in modern graphics software such as GraphicConverter or iPhoto, it will not show any date information. Apparently, there just is no EXIF data in the file.
I have found that the excellent EXIFRenamer utility for the Mac can parse the JFIF information, allowing files that have it to be successfully renamed and even have the date created filestamp updated.
BUT, I found out too late that early graphics programs would destroy this information when an image was rotated. Modern utilities know about all this stuff and will preserve EXIF data, but back then, it wasn’t well supported.
So now I find myself trying to finally sort thousands of my old personal photos and get everything all updated. A huge portion of my old photos no longer contain JFIF date information (due to being rotated) and none contain EXIF. They might as well be scans from paper pictures!
I began importing my entire picture collection in to iPhoto and noticed immediately the pictures showed no date information — just a date the file was “last modified.” This caused a ton of pics to appear in year 2001 for me. I then proceeded to spend all night trying to manually adjust dates using the iPhoto feature that will do this (a very powerful option, indeed!).
The end result was hours wasted trying to figure out if “0403_004.jpg” was taken in 1997, 1998 or 1999 with some success, and many obvious failures. It was a painstaking process of visual clues — did I have eyeglasses on? Full beard or clean shaven? Which apartment was I living in at the time? After finally getting about 95% “confirmed” (and finding out I have several galleries on my photo sites labeled by the wrong year), I decided there had to be a better way before I tackled my next batch of photos.
So here is my down and dirty solution to this challenge, using iPhoto, GraphicConverter and EXIFRenamer.
1. Some photos DO contain JFIF date code information, which neither iPhoto or GC can read, but EXIFrenamer can. So, I begin by using a feature of the renamer to rename all images to a temporary name (prepending an “_” to each file) and updating the creation date of the file. Set up a simple custom rename style of %P%o%C%S%F (it really only needs %P for prefix and %O for complete filename, but I use this for other things too):
Be sure to set the Processed Files tab to “Change File Creation Date to EXIF Date”:
2. Rename using EXIFRenamer and this setting. After the files dates have been updated, I then process them through renamer again to get rid of the “_”, setting them back to normal. (I couldn’t find a way to process them without renaming.)
3. Above, “%1U%F” uses a substring then the file type extension, and below you set Substring #1 to “mid (pos)” with “1” for par1 – this starts from the first character, so it skips the “_” character.
4. I then use a feature of GraphicConverter to adjust the modification date of files to the creation date.
5. Lastly, I import things in to iPhoto, which will then honor the modification date (it does not seem to care about creation date).
From here, I can then go back to using iPhoto to adjust the images that are showing up with undefined dates (1969, for some reason, or times in 2001 which must have been the last time I copied all these files over or something).
It’s a huge amount of work, still.
What I Need
I am still looking for a tool that will recursively add EXIF information to JPGS that do not contain EXIF, by using JFIF header information (if available). There is bound to be something out there that does this. Right now, I’m doing the above steps, then using iPhoto to manually set datecode on “missing” photos, which means only they now have EXIF and this process will need to be repeated for the other files if they are ever touched in a way that loses their modification date, or sorted in another tool that relies on EXIF.
Some Screen Shots:
Original image using old file system date:
New image after process (ignore the long filename):
Note that the date is wrong and bogus (1970) but it has at least been updated. For photos that still have correct JFIF date information in them, it will be as accurate as the camera’s timestamp was.
EXIFRenamer settings – two things must be set to do the rename and adjust the file creation date:
EXIFRenamer settings – two more things must be set to create a pattern to rename, but ignore the leading “_” character we just added to all the files:
GraphicConverter – open the folder containing all the images you wish to process, and Apple-A to select ALL, then do a right-click “DATE->Set Modification Date to Creation Date”. (iPhoto uses the modification date, so this extra step is necessary.)