Monthly Archives: February 2009

GraphicConverter to the rescue!

Thorsten Lemke, author of GraphicConverter, seems to be very responsive when it comes to feature requests and bug fixes for his product. When I earlier encountered an apparent memory leak with the “JPEG -> Remove double orientation tags and reset them” feature, he quickly provided me a beta to try out, which helped somewhat with this problem. (It will still crash on tons of photos, but not for the same reason. The memory leak seems to be gone.)

Anyway, after posting to the GCMAC mailing list, I have been contacted by two folks from Lemkesoft, and now I am trying out a new beta which seems to make the routines that normal just see EXIF also see the “PictureInfo” date. In the “ExifTool” window of GC is a section for File (with modification time), then one for JFIF (resolution and such), then PictureInfo (which has the info from my old Epson camera — I specifically see the date/time and “Sierra Highland” which is a string the camera embedded in the pictures, and one you could customize with the PhotoPC software.

Using this new beta, I can now simple select some photos and do “JPEG -> Set EXIF Date to File Creation Date” which seems to honor the PictureInfo date (though the wording implies it would use the file system Creation Date, so maybe this needs to be changed).

There may still be some issues — in testing, I find it is now adding multiple “File data and time” entries to EXIF, so I’ll work with Lemkesoft on this until we get it hammered out.

Very nice response!

JFIF in iPhoto

EXIF is a specification for digital camera files that allows them to store information in the photo, like when the picture was taken and if the flash was used. Before the EXIF standard, early digital cameras (circa 1996) would use a JPEG header extension known as JFIF to do something similar. My understanding is that this was not standardized.

Here is the Wikipedia article on the JPEG, which mentions JFIF.

Epson PhotoPC

Older photos I took with my Epson PhotoPC do not have EXIF information in them, and the camera import software back then defaulted to a DOS-style naming convention of MMDD_NUM.JPG. (MM was the month, DD was the day, then a three digit incrementing counter. I guess they never expected someone to take more than 999 images in a day, which was difficult since the PhotoPC could only store up to 99 images before you had to download using a slow serial cable connection. But I digress…)

Because of this naming limitation, looking at a file like “0503_001.JPG” doesn’t tell you the year it was taken. Over the years, I accumulated thousands of photos taken in May, and when they are imported in to modern software like iPhoto (which supports EXIF, but does NOT see the embedded JFIF codes), the pictures all get lumped together on the date the file was last modified. (In the included screen shot, a photo I have from June 11th 1997 shows up on August 21 2001 since, I guess, that’s the last time I did any copying of these images files or something.)

To make matters worse, many of my photos got renamed to things like “DL0004.JPG” (a batch of photos from Disneyland) with no indication of the month or date. Good luck!

The problem is that modern software, such as Apple’s iPhoto or Lemkesoft’s GraphicConverter do not look at JFIF information (nor should they, since we now have the EXIF standard to support). What is needed is a way to convert files with JFIF information into files with EXIF headers.

If you have an image without any EXIF data, GraphicConverter and iPhoto will let you modify the date and embed an EXIF header. This is required for any photos that were scanned (thus no EXIF or JFIF), or maybe had JFIF/EXIF but were manipulated with older graphics programs that did not honor it and thus destroyed it. (Any photo I rotated, for instance, lost any JFIF information, so I have thousands and thousands of photos with absolutely no indication of when they were taken inside the files.)

Nothing but manual editing can be done about files with neither JFIF or EXIF data, but for the old pics that at least have JFIF I have found a few steps, using a few programs, that will get all my old non-EXIF images converted to images with EXIF. The EXIF data will either be the correct information brought over from JFIF headers, or it will be some bogus information based on a file timestamp or whatever. In that case, manual editing is the only thing you can do.

Here is what I posted to the GCMAC (GraphicConverter) Yahoo! mailing list today documenting my steps, and it ties in to my previous post.

  1. Use EXIFrenamer to set the “Creation Date” of all my files to whatever JFIF information it can find. Some files contain none, so the creation data will be left unchanged (whatever date I copied the files over originally, I guess). Some files have bogus JFIF dates set to 1969 or other weird years.
  2. I will use GraphicConverter’s “JPEG -> Set EXIF Date to File Creation Date” option to recurse through all my files. Now each JPG will contain either a valid EXIF (along with a valid JFIF?), EXIFs with bogus dates brought over from the JFIF, and EXIFs that are just whatever file system timestamp unknown files were given. To verify, I drag the entire batch over in Mac OS X’s “Preview” app and open up the Inspector (Tools -> Inspector, or Apple-I). I switch to the center “! in a talk balloon” icon tab where I should see: “General | JFIF | Exif | TIFF” I quickly page through my images making sure all have EXIF sections now, valid or otherwise.
  3. I import these images into iPhoto, which now can rely on the EXIF tag instead of some filesystem date.

I just tested these three steps “fresh” and imported them into an empty iPhoto Library. It seems to have worked!

Now I have three smart albums, one for 1997, one for 1998, and one for 1999 photos, then I created one called “Before 1997” and one called “After 1999” which will contain the photos I need to manually adjust.

I hope this information helps someone else! Contact me if you have any questions. I’d be happy to help.

Epson PhotoPC and EXIF JFIF dates

What you will need:

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 into 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.

Anyone?

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.)