I've just noticed that iPhoto now has rudimentary support for importing embedded IPTC metadata from images. Even better any changes made by iPhoto to the title, keywords or caption fields are correctly updated when you export the image from iPhoto.
I haven't seen any mention of this anywhere so I figured I'd write it up and show people how it works.
- Start with any JPEG photo and add some IPTC metadata. I used the free trial of Graphic Converter to do this but there are many alternatives including Photoshop.
Verify that the IPTC metadata was successfully added to the image by selecting the image in Finder and using the "File - Get Info" menu. The IPTC data should show up in the "More Info" section. Another way to verify this is to use the exiv2 command line tool which is available via Mac Ports.
# exiv2 -p i pr ~/Desktop/iptc\ test\ picture\ \(pre-iphoto\).jpg | egrep "2\.(ObjectName|Keywords|Caption)" Iptc.Application2.Caption String 17 this is a caption Iptc.Application2.ObjectName String 18 title is blah blah Iptc.Application2.Keywords String 8 keyword1 Iptc.Application2.Keywords String 8 keyword2 Iptc.Application2.Keywords String 20 keyword with a space
Import the photo into iPhoto, you should see the IPTC information translated into the photo's title, keywords and caption.
- Change any of the title, keywords or caption information that you want.
Export the image from iPhoto using the "File - Export" menu (this does not seem to work if you drag and drop the image from iPhoto). It's important that you select JPG as the image type and tick the "Include title and keywords" box.
Inspect the IPTC metadata on the new file and it should be updated to reflect the changes you made in iPhoto! w00t!
exiv2 -p i pr ~/Desktop/iptc\ test\ picture.jpg | egrep "2\.(ObjectName|Keywords|Caption)" Iptc.Application2.Keywords String 14 iphoto keyword Iptc.Application2.Keywords String 17 surprise butsectx Iptc.Application2.ObjectName String 12 iphoto title Iptc.Application2.Caption String 39 nobody expects the spanish inquisition.
In theory you should be able to do this with TIFF as well as JPEG images but I haven't tested it.
If you discover any other information about iPhoto's IPTC support please let me know!
UPDATE: The Tao of Mac reports that none of this is yet scriptable. Stink.