- Every time a change is made to a photo, the original is left around. This is so you can revert to the original. While the theory is nice, there are plenty of cases where this isn't necessary (e.g., rotating a photo, removing red-eye). As a result, I have a couple gigs worth of "Original" photos. I would love to be able to remove these, but iPhoto's meta-data (stored in Library6.iphoto), doesn't play nicely with this change. If you remove the original, then the current version is present, but if you every choose the "Revert To Original" option, you're hosed for that photo. If you replace the original photo with the current photo and then remove the current photo, iPhoto won't display the photo. The iPhoto meta-data would need to be updated, but it's format looks propietary, and no Google search yielded any results.
- We don't have a video camera, but use our digital camera's video functionality a lot. As a result, we have a lot of video in our library. The video quality is by no means HD and it isn't compressed very well, thus there is a ripe opportunity to save some space by reducing these videos. Using command line scripts, it wouldn't be hard to bulk-compress all the movies, but the trouble again comes with updating the the metadata. Since I would want to compress ".mov" or ".avi" movies to ".mp4", the filenames would change, the the metadata would need to be updated.
This got me thinking about moving to Google's Picassa, which was released for Mac back in January. The attractive thing about Picassa is that you can store your files however you like. They don't need to be imported into some library. The issue then becomes importing pictures from iPhoto into Picassa. Unfortunately, Picassa only lets you import by event, not be album. While I like iPhoto's event concept, it doesn't meet all the needs that albums do. A photo can belong to multiple albums but only to one event. Also, since we have been using iPhoto before the event concept came around, a lot of our photos haven't been categorized to events. Albums are our gold standard.
I can export my albums manually, one album folder, but this becomes very tedious, since you have to export one album at a time. You'd also have to create the folder names. iPhoto doesn't expose a way through AppleScript to export folders. There are Perl modules for reading iPhoto's album XML (AlbumData.xml), so this may be possible. I unfortunately deleted Apple developer tools off my hard drive though to get some space back, so will need to download them again to try this out.
As you can probably tell, this has been quite the process. The whole reason I want to shrink iPhoto's library is to get space back on my hard drive. After spending all this time, and having no clear/easy solution, I took a step back, and looked for other ways to reclaim space. I remembered that I had a license for WhatSize, and quickly located the data consuming directories on my hard drive. While the iPhoto library is big, our various iMovie projects are bigger. Since I have two external hard drives now (one for personal and one for work), I was able to free up plenty of space by moving these movie projects to both the hard drives.
In the meantime, I will wait to see if:
- iPhoto gets better utilities for shrinking its library.
- Picassa gets better utilities for importing albums from iPhoto.
- http://www.fatcatsoftware.com/iplm/Documentation/iPLM/pgs/libraryfolder.html - explains the iPhoto library folder.
- http://www.fatcatsoftware.com/iplm/Documentation/iPLM/pgs/albumdata.html - explains the AlbumData.mxl file.
- http://onemansblog.com/2009/01/07/a-direct-comparison-of-picasa-for-mac-vs-iphoto/ - Good comparison of Picasa verses iPhoto.
- http://search.cpan.org/~dmytro/Mac-iPhoto-0.1/iPhoto.pm - Perl module to convert AlbumData.xml to a Perl hash. Note though that it doesn't include all the attributes of an album (e.g., if the album is in a folder). The module could easily be extended to do this through its dependency: Mac::PropertyList.
- http://omino.com/sw/qt_tools/man/qt_export.html - Command line tools for converting movies using QuickTime.