Back to Bath

We are just back from a really lovely long weekend in Bath, which was my first extended play with the latest toy, my 16-35mm L, which I picked up at the end of December. The lens is the last step in my preparation to go full frame. The wide end on a crop sensor is a bit of a shock in comparison to the lens it’s effectively replacing for me – the 10-22mm S mount, as it’s weighing at about 25.6mm with multiplier effect. The build quality is fantastic, and very similar in feel [and materials] to the macro 100mm L.

A few quick shots:

Georgian Infinity

Georgian Infinity

Rebecca Fountain

Rebecca Fountain

Finally, an HDR shot of the Abbey:

Bath Abbey HDR

Bath Abbey HDR

So this is bracketed around a 5 second exposure at F8 [the other exposures are 1.3 and 20 seconds respectively]. I still find the HDR to be very hit and miss, so while this isn’t the best shot I’ve taken, I have a few rules of thumb, which at least minimise the failures.

I find dusk gives the best results, as it makes for the broadest range of exposure without super stopping down [F22] or using filters during the day, and B setting long exposures at night. Trying to keep electric light sources out of the shot also helps, as you get massive halos, and blown out sections on the long exposures.

One variable which is very hard to mitigate for – other than a postponement! – is the cloud cover. When I took the shot above – actually, it was something of a photographic scourge all weekend – there was very even cloud, with no variability in light quality. The long single exposures made for a very deep blue colour, which by the time the HDR software had stirred the pot, looked pretty awful. I will often desaturate in post, or even go for full black and white.

All of which is a lovely story. In a deeply unrelated final comment, if you are in Bath, try to get a table at Sotto Sotto. It’s fab!

‘Pin Your Pics’ on the App Store

My new app is now live. It’s a utility for reviewing the GPS data in your Camera Roll: it steps through your pictures and, for those images which have the location data set, you link through to see a thumbnail of the image on a map. Based on some early feedback, as well as the ability to scroll through your entire library, you can quickly scan to the latest pictures. I also have a feature which allows you to see multiple images on a single map [up to fifty at a time].

I’m pretty pleased to have gotten it out the front door and – while I am biased 🙂 – I think it’s a genuinely useful app and well worth the 69p asking price.

The app icon is based on a picture from our last holiday, where the idea for the app started to foment. The image links through to the App Store:

Pin Your Pics

Thanks to Jen [imaginative name – and the actual pin in the macro shot of the map!], James [great feedback] and Sarah [persevering :)].

Doing Battle with imagePickerController and Orientation

I am in the home straight – hopefully – with my new app which is, unsurprisingly enough, photography related. It’s an order of magnitude of complexity above the weight tracker, and has been a real challenge to get through.

The interface to the  ALAssetsLibrary isn’t without its foibles, including the fact that, when used in conjunction with the image picker, there is a fair amount of work to be done by hand.

One of the bigger surprises is image orientation, which you have to add yourself.

Perhaps this incantation may come in handy for you:

UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
int imOrNum = image.imageOrientation;
...
int orientMetaVal = 0;
    if (imOrNum == 1)
    {
    // landscape, vol buttons up
        orientMetaVal = 3;
        landscapeSnap = TRUE;
    }
    else if (imOrNum == 3)
        //portrait, home button down
        orientMetaVal = 6;
    else if (imOrNum ==0)
    {
        // landscape, vol buttons down
        orientMetaVal = 0;
        landscapeSnap = TRUE;
    }
    else if (imOrNum == 2)
    {
        // portrait, home button up
        // 5 is weird - thumbnail right, image inverted.
        orientMetaVal = 8;
    }
...
[tmpMetadataDic setObject:[NSNumber numberWithInt:orientMetaVal] forKey:@"Orientation"];
So the landscape trueness is just something that I use when I’m previewing the image that has just been taken. You then need to set various bits and pieces in a NSMutableDictionary, such as the orientation, which eventually gets written back with the file as a parameter to
[yourInstantiatedAl writeImageToSavedPhotosAlbum:[nicePicture CGImage]
                            metadata:tmpMetadataDic

One other thing to look out for is the requirement to add in all of the vanilla EXIF data – ISO, shutter, etc. That’s actually pretty easy. I initialise the dictionary of metadata with this:

NSMutableDictionary *tmpMetadataDic = [info objectForKey:UIImagePickerControllerMediaMetadata];