Archive for the 'Photo Related' Category

Pantone Huey

I picked up a Pantone huey colorimeter this week so that i run a little more of a chance of getting a reasonable match between the colors that I see and what comes out of a printer. I can’t say that I’m 100% convinced that I’m getting good results yet, at least on the MacBook’s screen. The MacBook vs. Huey is not exactly an unknown issue on the net, though this seems to be a more subtle version than the heavy green casts that people were getting.

First off, the colors are different. Cooler and less contrast are the first things that I notice. if I take a break and come back to to the screen, the colors do look reasonable, so that’s not evidence of miscalibration. I certainly wouldn’t be surprised if it turned out that the native MacBook colors are far punchier with high contrast and saturation and muddy shadows. That’s great for videos and selling machines in the store.

What does worry me is that the B&W images that I’m displaying (in Lightroom, a color aware application) aren’t coming out in pure neutral. There’s distinct coloration, a sort of off color yellowy green in the mid-tones. That shouldn’t be there in a properly calibrated screen. I’m going to venture a guess that the response curves for the individual RGB channels aren’t the same. The calibration software does the bulk of the profiling with neutral tones instead of a pure singe color. I’m not sure why, unless it’s a speed or product differentiation issue. That compromise would wind up making the overall luminosity curves correct at the expense of the color balance. Thankfully, it’s something that might be fixable in software.

The calibration seems better on my Dell 20″ desktop LCD, so perhaps it’s a quirk of the MacBook screen. I’ll have to try comparing to good prints to see if it can nail skintones on the external monitor. If it can, then it’s worth having.

No comments


I’ve been using Adobe Lightroom since the beta3 time frame, and I’ve got to say that it’s improved the results of my photography. There’s a noticeable quality improvement from the pre-Lightroom times. 1.0 has been solid, if not totally speedy on my Macbook. I have a couple of quibbles though:

  • Sharpening — there’s very little control of sharpening. I’m used to (older) Photoshop’s Unsharp Mask, and the ability to control radius and threshold is quite useful.
  • Noise Reduction — i can barely make out that it’s doing anything. At least it’s split into color and luminance noise sliders, so that the little it’s doing are on appropriate axes.
  • ‘Channel’ Mixing — This is so important that they rounded up twice the usual number of channels. I wish that there was a good way to see the individual channel contribution quickly, like the cmd-123 in photoshop.
  • The Slideshow produces a PDF. Great, but probably relies on some acrobat specific behavior to make a slideshow. This is the most useless of the 5 modes for me right now.
  • Web Galleries are a nice way to dump out the images for a quick gallery. The HTML seems a little limited. I would have liked to see something similar to the flash gallery done in HTML. (Thumbnails across the bottom, in a frame/scrolling div, and the main image on top.
  • Also in the Web Galleries, the flash versions look absolutely horrible if the image isn’t displayed at full size, since they don’t use a good scaling algorithm to adjust the image size. I’d rather that they simply let a smaller image float rather than scale an image with jaggies

All in all, that’s a pretty small list for a 1.0 product.

No comments

On Colorspaces

and towards a more color managed workflow.

A while ago I posted about an article that had a lot of detail on colorspaces, profiles, and what works both on the web and in print. One of the takeaways from that was that my workflow was not color managed, except for (possibly) on the mac and probably on my laptop.

Which is a bummer, since the laptop has proved itself to have a really wonky color response profile, at least as compared to what gets printed and any other display I have access to. For example, custom white balance in the camera is better than doing anything by eye on this machine. Print matching was a nightmare. It turns out that there’s a monitor profile from 10.4.7 that is a lot closer to what the prints were producing, so I’m using that for now. But still.

The takeaways were that anything destined for the web or print probably should be in sRGB, that the camera should probably be in AdobeRGB (a wider color space), and everything at every stage should be tagged with the appropriate profile. Finally, I should get a colorimeter and at least get the best profile I can on this monitor.

I’m still using a raw converter that’s using the coregraphics filters to do my first cut at the images. It’s good enough for most of the web destined images, unless I need to do B&W conversion or edits. It turns out that it’s not that hard to hack in support for specific color spaces, instead of the generic ones.

Since I don’t see this well represented in google: Obj-C following:

CGColorSpaceRef cs, default_cs;
CGDataProviderRef profile;
NSDictionary *options;
float ranges[] = {0.0,255.0,0.0,255.0,0.0,255.0};

default_cs = CGColorSpaceCreateDeviceRGB();
profile = CGDataProviderCreateWithURL((CFURLRef) \
   [NSURL fileURLWithPath:@"/System/Library/ColorSync/Profiles/sRGB Profile.icc"]);
cs = CGColorSpaceCreateICCBased(3, ranges, profile, default_cs);

options = [NSDictionary dictionaryWithObject:(id)cs
context = [CIContext 
  contextWithCGContext: [[NSGraphicsContext currentContext] graphicsPort]
  options: options];

Where previously, I was passing in no options (or more precisely, nil), this time I’m passing in a dictionary specifying an output color space, initialized to a system profile. This will convert anything that is painted into the context into sRGB, and include the profile in the output image. It’s apparently also possible to use a Lab color profile, but I’m unsure how useful that would be since the only other Lab aware app I know of is Photoshop.

Looking at the camera data, the RAW files are tagged with AdobeRGB, 16 bit which is a bit of strangeness, since AdobeRGB is an 8 bit space. But, since it’s RAW, it really doesn’t matter, since the RAW files are open to so much interpretation anyway. If I do switch to JPEG, it should still be in AdobeRGB, so I’ll capture as much of the gamut as possible.

I’m curious how much of a difference this will make. It certainly feels like the right thing to do.

No comments

2006, Pictures, In Review.

Inspired by Ted Leung, I’ve gone through the year and grabbed one (or a couple twos) from each month that stand out.

I’ve loved this shot ever since I stumbled upon it last January. It seems very dynamic for a sleeping cat, and what would a year be without a cat picture to start it off.
Dougal - January

February brought Northern Voice/MooseCamp/Photocamp and this shot from the 30 somethingth floor of the hotel.
Looking down

March was a trip to the UK, and many family holiday snaps. This was on the ferry from Belfast to Scotland.
boy, on the ferry

April was the beginning of berry season at the house, and I got some new closeup filters for taking really closeup pictures of them.

May was Mindcamp 2.0.
Sparky of Borg

June was, as all junes are really, the time for the Fremont Solstice Parade.
A tree, or an ent, or something

Also in June, I took one of my favorite pictures of the boy ever.
Wide Eyed

July was a trip out to Iowa for my family. Many portraits of family, and hot air balloons.
Hot Air

And another one of those ‘too cute to pass up’ pictures of the boy, this one at the county fair.
Big Wheel

August we went to the coffee shop, and Ben started drinking steamed milk.

September, the boy is getting more independent. We’ve picked blackberries, apples, huckleberries. It’s a sweet world in September.
Walking Away

October was a visit from Rose’s parents, a transplantation of this site, and yet one more cute picture of the boy, one of the few using an on camera flash.
Am I too blue?

November was another Mindcamp, the beginning of my Strobist flash lighting journey, but really we remember it as the beginning of the nasty weather and power outages.
Snowy and Cold

December was a visit from my parents for christmas and the ever increasing belly. Photographically, it’s where I really started using off camera lighting.
The Belly

No comments

Digital-Image Color Spaces

This (Digital-Image Color Spaces) is a good article on the current state of support for specified color spaces in images in browsers. I’m going to be changing a few things around here because of it. First of all, I’m going to be using and specifying the sRGB color space in web sized images, since I think right now I’m at non-color managed and effectively non-specified. Second, I’m probably going to be specifying AdobeRGB for any in-camera jpegs, to capture the wider gamut without losing too much precision.

No comments

Flickr Updates

Sometime in the last week or so, flickr updated it’s api and broke my uploader, one that internally used the flickrapi python script. I was getting errors: Error 4: Filesize was zero.

Turns out that the flickrapi.py wasn’t sending a \r\n before the final content separator. It looks like the author figured that out right about the same time that I did, since there’s a new version with a timestamp of yesterday afternoon.

No comments

Tonight’s Hack

So in preparation for the upcoming Mindcamp, I wanted to glue together the code I have to upload to flickr and Apple’s folder actions to make PhotoBooth automatically upload pictures to Flickr and put them in a PhotoBooth set.

To keep the applescript as small and troublefree as possible, I took an existing applescript folder action (in this case, copy to jpeg) and hacked it up to call a python shell script where I make a few calls using the FlickrAPI module.

-- the list of file types which will be processed 
-- eg: {"PICT", "JPEG", "TIFF", "GIFf"} 
property type_list : {"JPEG"}
-- since file types are optional in Mac OS X, 
-- check the name extension if there is no file type 
-- NOTE: do not use periods (.) with the items in the name extensions list 
-- eg: {"txt", "text"}, NOT: {".txt", ".text"} 
property extension_list : {"jpg", "jpeg"}

on adding folder items to this_folder after receiving these_items
    repeat with i from 1 to number of items in these_items
      set this_item to item i of these_items
      set the item_info to the info for this_item
      if (alias of the item_info is false and the file type 
          of the item_info is in the type_list) or 
          (the name extension of the item_info is in 
          the extension_list) then
        set theCmd to "/Users/erics/bin/pb_flickr.py " 
          & (quoted form of POSIX path of 
          (this_item as string)) & "&"
        --display dialog (theCmd as string)
        do shell script theCmd
      end if
    end repeat
  on error error_message number error_number
    if the error_number is not -128 then
      tell application "Finder"
        display dialog error_message buttons 
          {"Cancel"} default button 1 giving up after 120
      end tell
    end if
  end try
end adding folder items to

The python code is pretty straight forward, the only real tricks are getting api keys, secrets, and tokens. I’m not sure I remember what I did to get those, since I did it a year ago.


import os
import sys
from flickrapi import FlickrAPI

set_id='72157594368688426' # your set id here...

class flickrprefs:
  api_key = 'your key here'
  api_secret = 'your secret herer'
  auth_token = 'your token here'

if __name__=='__main__':
  argv = sys.argv
  if len(argv) < 2:
  pth = argv[1]
  prefs = flickrprefs()
    fapi = FlickrAPI(prefs.api_key, prefs.api_secret)
    rsp = fapi.auth_checkToken(api_key=prefs.api_key,
    if not rsp:
      #token isn't valid.
    rsp = fapi.upload(filename = pth, 
                      description = '', 
                      api_key= prefs.api_key,
                      auth_token = prefs.auth_token,
    rsp = fapi.photosets_addPhoto(auth_token=prefs.auth_token, 
                                   api_key= prefs.api_key,
  except Exception, msg:
    #print msg
    pass # I don't really care if I'm not connected to the net. 

Finally, it's a simple matter of dropping the applescript in the ~/Library/Scripts/Folder Action Scripts directory and enabling it with the Applescript Folder Actions Setup app.

No comments

Snapfish Woes

I’d really like to praise snapfish here, but I just can’t. Their image quality is good, their website is functional enough, they have enough of an api for me to upload from my image workflow, but their fulfillment and customer service leave a little to be desired.

I ordered 80 reprints on 9/28. While ordering, I changed my shipping address. You can see where this might be going. A week later, when the prints didn’t arrive, I checked the order and saw that they were sent to my previous address. At this point, I’m not annoyed, bugs happen, and I can see how there might have been a race condition between changing my address and shipping the prints.

I opened a support ticket explaining that the pictures went to the wrong address. The response: wait for 10 business days to pass. I wait. No pictures. I respond, they say that the order must have been lost in the mail, and they need to confirm the (incorrect) shipping address. I respond, clearly stating for the third time that they shipped to the wrong address, and they should try the correct one.

A week later I prod them and they submit the order and ship it to the wrong address. In no part of this exchange did they ever seem to recognize that they shipped to the wrong address instead of the postal service not delivering.

I get the order confirmation 10 minutes before they close. 2 emails and a pone call later, I’ve got someone on the line who can do the intelligent thing and ship the prints to the right address.

It’s coming on a month since I ordered these prints. I don’t think that I’ll be ordering any more from Snapfish.

No comments

« Previous Page