Links for June 24, 2005
- The Anti-Semitic Disease, by Paul Johnson A fascinating and long-ranging survey of the historical effects of anti-Semitism on different cultures.
I got an email this morning asking if I knew anything about the iPhoto color shifting issue with edited images. I hadn’t been paying much attention to this while working on other stuff, but once I looked for the problem it it was very apparent and troubling.
Based on a lot of good information in the MacInTouch iPhoto Report, a massive thread on Apple Discussions and my own experience with Apple’s image manipulation tools, I think I’ve found the basis of this bug. James Bailey’s observation on MacInTouch specifically identifies the problem:
Using Photoshop 7.0 to help diagnose this, here is what seems to be happening. My original photo seems to have an embedded ColorSync profile of sRGB IEC61966-2.1. [...] Opening the duplicated and cropped photo I do not get the same warning which means that Photoshop thinks the embedded color profile is now ColorSync RGB - Generic RGB Profile for the new file. [emphasis added]
That describes exactly what I’m seeing.
SIPS, Apple’s Scriptable Image Processing System offers tools for working with images and manipulating things like ICC color profiles. I have two photos, DSC04737.JPG and DSC04737_1.JPG, the second is a duplicate of the first with a few lines cropped off the bottom to trigger the color change.
When opened in Photoshop, I see the following Color Management warnings:
DSC04737.JPG
Embedded: sRGB IEC1966-2.1
DSC04737_1.JPG
Embedded: Generic RGB Profile
However, when checking with SIPS, I see this:
$ sips -g profile DSC04737.JPG
profile: Generic RGB Profile
$ sips -g profile DSC04737_1.JPG
profile: Generic RGB Profile
SIPS appears to wrongly identify the embedded profile in the original image, believing it is Generic RGB. It gets slightly more interesting, and confirms another suspicion of mine: With 10.3.9, SIPS can’t find a profile in the unmodified image and returns the following:
$ sips -g profile DSC04737.JPG
profile: <nil>
$ sips --extractProfile profiledump.icc DSC04737.JPG
Error: No profile in image
At this point I’m comfortable pointing to the underlying ColorSync foundations updated in 10.4 as the culprit. (These are used by SIPS and presumably by iPhoto too, despite iPhoto’s unique EXIF parsing engine, the foundations are meant to be used throughout the system.) My only hesitation is whether or not this problem appears on 10.3.x after installing QT7.
Comparing the two images without color management in Photoshop shows that the image is permanently changed. Unfortunately, this means that whatever caused the conversion applied a lossy correction to all pixel values. While there is the potential to somewhat reverse this problem with some profile voodoo and dumb luck, the result would be twice shifted and especially prone to visible artifacting and posterization.
Based on the above, I’m guessing that when iPhoto reads the originals, it wrongly interprets the files before applying changes to it. This would mean the modified files are ruined before iPhoto’s adjustments are even applied.
If I were feeling especially adventurous and had lots more time, I might try replacing all or some of the ColorSync frameworks with versions from 10.3.9. I’d find the files to replace here:
/System/Library/Frameworks/
ApplicationServices.framework/Versions/
A/Frameworks/ColorSync.framework
/Versions/A/
Of course I’d be doing that at my own risk, with the knowledge that I could render my computer unbootable and only with a full backup ready to go. But it is an interesting theory and I wonder if anyone’s tried it yet.
Rumor has it that this is all fixed in 10.4.2. (update: not fixed
NYC Creative Director leaves clients and staff in NYC, moves to Kabul to help establish the first communication agency in the country since before the Taliban. Is she a sadist, uniquely qualified for the task, or simply and blindly optimistic?
On June 21 at 7 pm in The One Club Gallery, Sharoz Makarechi of Think Tank 3, recently back from the trenches, will share advertising stories from war-torn Afghanistan and discuss the value of ideas, cross media thinking, and creative communication campaigns in a society struggling to recover from over 25 years of war.
That would be my friend Sharoz. It’s hard to put into words how much I respect and admire her courage. I feel lucky to know such an exceptional person.
Update: Kabob!
So the WWDC rumor mill just went into turbo-super-maximum overdrive.
CNET: Apple to ditch IBM, switch to Intel chips
Yeah, CNET is supposed to be pretty legit, as these things go. As would be expected, the MacRumors forums are abuzz, most interesting speculation is that Intel starts making a PPC-style CPU.
An ironic point, if true: Apple will be running on Intel. Microsoft will be running on IBM G5s. (OK, a sorta G5-ish tri-core CPU)
Not sure what to make of any of this. Mac-Intel rumors have been around forever. The technology isn’t really an issue, between OSX’s hardware abstraction and Apple’s excellent development tools, most apps should be able to migrate in a reasonable amount of time. The bigger problem is inventory and future sales. Who’s going to buy a dead-end computer? If everyone knows they’re switching chips (and if they do announce this, everyone will know), the hit on existing inventory and interim sales would be astronomical. If this is true, I hope they have a lot of cash in the bank.
How would the market react? Bump Apple up huge on the news until calmer heads point out the sales hit? Shares fall immediately based on the sales hit but recover to higher levels after a few months? Apple got hammered on Friday because of rumors of too much inventory, I really need to find a way to get quotes on my phone via SMS.
Whatever happens, I’m getting really psyched for the keynote.
Apple’s WWDC starts next week and the rumor sites are uncharacteristically quiet even though Steve Jobs’ keynote is only four days away. It’s very unlikely we’ll see any talk about 10.5, since 10.4 just shipped and there are a ton of wrinkles to iron out. I’m expecting to see a lot of new hardware development, or else a two hour buzzkill Tiger demo. There are 18 TBA sessions scheduled including at least one in the big room, so something new is likely to be announced.
The past year seems like it’s been a good for hardware innovation. Now that AMD and Intel both have multicore and 64bit chips in the market the G5 doesn’t seem as competitive as it was two years ago (not to mention being two years overdue for 3ghz). IBM’s Cell Processor is another unknown, but arguments could be made about cramming one into a PowerBook. A friend with reasonably good contacts thinks we’re going to finally see a G5 PowerBook. I hope so, and my credit card is ready to go. Hopefully we’ll at least get that Powerbook HD referenced by the typo in the current PowerBook manuals. And maybe PowerBooks will do a little better to close the speed gap with desktops (or at least iMacs). According to MacRumors Buyer’s Guide, Powerbooks will be 126 days into their product cycle and iBooks will be overdue for a refresh at 230 days. Seems like a good time to announce new portables, especially since nearly everyone at the conference is carrying one.
The tracks seem a lot more technical this year, which is good. The previous two years I ended up in several sessions where I was bored or didn’t learn anything.
My primary goals for this year are a bit more modest than last year. First, I’m focusing on related technologies to FXScript, FCP and graphics stuff. This includes all the pro-video apps, especially Motion and the Shake SDK, plus the Quartz Composer labs. I’m still very interested in CoreImage and CoreVideo, but there aren’t very many of those sessions scheduled.
I have a feeling I’d be bored by too many Dashboard sessions since I’m pretty good with JavaScript and CSS and don’t really have any ideas for widgets that haven’t been done already. Unix scripting and shell commands will be a focus, I’d like to see how other people work with them since I taught myself and feel like I’m often stumbling around.
The best thing I got last year was better programming practices, so I’ll be making a more deliberate effort to be in sessions related to source-code control, development tools and better working methods.
Aside from that, I’m hoping to pick up a bit of Cocoa, get over the AppleScript Studio hump, and find more fascinating stuff that doesn’t fly too far over my head.
Wednesday’s Brown Bag Lunches are a problem because I want to attend three of them; Python Today with the language’s creator Guido van Rossum, PHP on a PowerBook with that language’s creator Rasmus Lerdorf and the MySQL and SQLite lunch with author Brian Jepson. I’ll probably be at either the PHP or Python lunch, PHP because I’ve done a lot of work with it, Python because I’ve been meaning to learn it. Thursday I’m going to the Advanced Scripting with brian_d_foy, who I’m looking forward to meeting.
I’ll also be attending Buzz Andersen’s WWDC 2005 Weblogger Dinner on Monday night. Looking forward to meeting a bunch of people there.
