Lift & Stamp EXIF Data in Aperture
Have you ever wished Aperture had the option to lift & stamp EXIF data? Me too. So much so I wrote an AppleScript to do just that.
Yes, there's other methods I've found on the web, but none quite fit my needs. I wanted something simple, dealt with all EXIF fields, and keeps me in Aperture - bouncing to other tools is a slowdown. If you're still curious on my motivation, see the Background section at the end of this entry. But for now, let's get to the script - probably what you're after.
The usual. I'm using this script and it's working well for me. But I make no claims that it is bulletproof. I take no responsibility for any damages it may cause. Use at your own risk.
The script is beta. I've done testing of it on a few different libraries, both Managed and Referenced. Also on a variety of image types (NEF, JPG, PSD, TIFF). But my photo sample space is limited and my camera pool even more so. I would appreciate any feedback from you if you try out the script. I'm open to making bug fixes....but I do have a day job. :)
Finally, the script is free. I want people to use it and benefit from it. If you do wish to make a donation to fund improvements - or maybe other AppleScripts - then the Donate button in the sidebar is just for you. Strictly optional.
The initial setup is simple and shouldn't take more than a few minutes.
- Download and install exiftool. The standard Mac OS X package is all you need. If on Mountain Lion, you may need to adjust the settings of the Gatekeeper to install the package.
- Download the EXIF Lift & Stamp AppleScript and save it in ~/Library/Scripts/Aperture. If that folder does not exist, you can create it. (And don't forget on Lion or Mountain Lion, the ~/Library folder is hidden by default.)
- Run Applications -> Utilities -> AppleScript Editor and open the Preferences. Check the "Show Script menu in menu bar" option. This will put an AppleScript icon in your menu bar.
That's it - 3 steps. You can check your setup by clicking the AppleScript icon in the menu bar. You should see an Aperture folder with EXIF Lift & Stamp in it like this:
Ok! You're good to go.
Running the Lift/Stamp EXIF Data Script
Lifting EXIF data from one image and applying to others is easy. It's as simple as selecting the images in Aperture and running the script. Watch the video above for a demonstration or for a quick primer see the screen shots below.
I've selected two images. The one with primary focus is "San Diego 202 101" and as the screen shot shows it has limited EXIF information. The photo is a composite I did using onOne's Perfect Layers. I can't remember if I used the plug-in or worked in Perfect Layers stand alone. Either way, the EXIF data clearly didn't make it to the final image.
The other image that's selected is one of the RAW shots I used in the composite. It has full EXIF information (not shown). With the two images selected, choose EXIF Lift & Stamp from the AppleScript menu icon. The script runs and a few moments later will finish.
Once the script is done "San Diego 2012 101" has full EXIF data. The script handles figuring out which of the two selected images has the EXIF data.
Simple! I didn't leave Aperture and with a few clicks I've fixed up my EXIF data.
Frequently Asked Questions
Q: What versions of Aperture does EXIF Lift & Stamp support?
A: The script supports Aperture 3.4.1 and 3.4.2. I have not tested it on prior versions. As the Aperture database can change between versions, the script takes a paranoid approach to supported versions. If you have an older version of Aperture 3, and you would like to get the script working, let me know by leaving a comment here.
Q: Can I select more than two photos?
A: Yes. But only one can have EXIF data so the script can determine which image to source the EXIF data from. The script will exit if more than one of the selected images has EXIF data.
Q: Can I select any version of a photo?
A: Yes. The script handles figuring out the original file on which the version is based.
Q: Does the script operate on raw files? JPGs? TIFFs? etc.
A: Generally, yes. The script uses exiftool to perform the copy of the EXIF data, so it is limited by what exiftool supports. But exiftool has very extensive file format coverage. Note that not all EXIF fields are supported with all file formats.
Q: Does EXIF Lift & Stamp work on Managed libraries? Referenced libraries?
A: Yes to both, but running on Managed photos is not recommended. I've read enough online about making any modifications to any file inside an Aperture Library is asking for trouble. As such, the script will issue a warning for any managed photos found and ask if you want to continue or quit. You can always relocate the originals, run EXIF Lift & Stamp, then consolidate the originals.
Q: Does the script have an Undo feature?
A: No. Take care when making your photo selections. Note: exiftool supports removal of EXIF tags and is an option if you fat-finger something. You'll need to be comfortable in Terminal.
Q: What if I find a bug or hit a problem?
A: Let me know by leaving a comment on this blog entry. I'm interested in making EXIF Lift & Stamp a solid, reliable script.
Q: Is lifting & stamping EXIF data dangerous?
A: Not really a question about the script, but something I've wondered about, too.
Dangerous in the sense of will I damage or mangle my source image? I suppose any time you write to a file, there's opportunity for damage. But generally speaking, I don't think there's a particular danger to the image when manipulating the EXIF data. As for EXIF Lift & Stamp, the script uses exiftool which has been in existence for a long time and used by lots of people. It already has protections not to change "unsafe" EXIF data - data that could change the look of the image. So I trust the tool.
Dangerous in the sense that it could misrepresent information about a photo? Sure. Which is one reason to take care when selecting images for use with EXIF Lift & Stamp. When I use the script, it's generally to correct EXIF loss from external edits. So I'm confident that I'm stamping down highly accurate EXIF data. For some HDR photos, the exposure compensation (EV) value is questionable. There's likely other values that become "fuzzy" depending on the nature of the edits. For me, this level of "noise" is acceptable.
Your mileage may vary. If you're a purist (which is OK) or paranoid (which is OK), then you probably don't want to fiddle with EXIF data. Or, you want to limit what EXIF fields are lifted and stamped. For the latter, you are welcome to made your own customs changes to the script to suit your particular needs.
Background - Why This Script?
Off hand, I noticed an image in my library that didn't have EXIF data. I got curious and created a Smart Album to find other photos with missing EXIF data:
Wow...I've got hundreds. Yes, some are film scans and some are scans of physical prints. But many are of images I know I took with my Nikon D70s or D7000. The common theme for the photos missing EXIF data was they'd all been edited with a plug-in or external editor. In some cases, a few EXIF fields would survive the trip (I'm assuming differences in what the plug-ins and editors honor/support), but by and large these images were devoid of EXIF information. And yes, I did check that my export presets are including metadata.
Aperture doesn't provide facilities to modify the EXIF data - in line with it's strict policy of never modify the original image (save Write IPTC Data to Original...). But EXIF data is valuable. And in my workflow, more often than not the images I've edited outside of Aperture are my picks for that shoot. Which means these photos missing EXIF data are more likely to appear in other Smart Albums I create (like those that discern for stack picks only). And in turn, when I analyze my "good" shots using tools like Aperture Inspector, I'm missing information.
So what to do? Like you are probably doing now, I started scrounging the web. The most promising lead I found is a nice writeup on the photolifetoys blog. Certainly worth checking out. After some straightforward setup, the solution is drag-and-drop based. However, it only deals with three EXIF fields: Lens Type, Focal Length and Aperture data. If that suits your needs - awesome. Head over there and use that solution. It's pretty slick.
But for me, I wanted other EXIF fields too. Information like the camera make, ISO and shutter speed are important to me also. So I wrote my own "EXIF Lift & Stamp" AppleScript to suit my needs. And at the risk of patting myself on the back, I think I've done a good job at keeping the initial setup work short and execution simple so the script is minimally disruptive to a workflow.