Note that IKImageBrowserGroupRangeKey takes the location of the first image in the group whilst the method parameter _index_ refers to the index of the group.
Note that IKImageBrowserGroupRangeKey takes the location of the first image in the group whilst the method parameter _index_ refers to the index of the group.
Note that IKImageBrowserGroupRangeKey takes the location of the first image in the group whilst the method parameter _index_ refers to the index of the group.
Note that IKImageBrowserGroupRangeKey takes the location of the first image in the group whilst the method parameter _index_ refers to the index of the group.
Note that IKImageBrowserGroupRangeKey takes the location of the first image in the group whilst the method parameter _index_ refers to the index of the group.
Note that IKImageBrowserGroupRangeKey takes the location of the first image in the group whilst the method parameter _index_ refers to the index of the group.
Note that IKImageBrowserGroupRangeKey takes the location of the first image in the group whilst the method parameter _index_ refers to the index of the group.
What exists and when?
• Master file exists, but may be offline.
• A JPEG preview may exist.
• CI recipes exist in Aperture DB.
Preview generation is a
preference
Workflow
Ingest Metadata Edit Output
Workflow
Output
Workflow
• Version Export to disk
Output
Workflow
• Version Export to disk
• Media Browser
Output
Workflow
• Version Export to disk
• Media Browser
Output
• Drag & Drop previews out of Aperture
Workflow
• Version Export to disk
• Media Browser
Output
• Drag & Drop previews out of Aperture
• Export plugins
Media Browser
Media Browser
• No API for Apple’s Media
Browser
Media Browser
• No API for Apple’s Media
Browser
• Check out Karelia’s iMedia
Browser
• karelia.com/imedia
Preview Fingerprint
Preview Fingerprint
Aperture writes its internal ID to the IPTC
Special Instructions in previews.
Preview Fingerprint
Aperture writes its internal ID to the IPTC
Special Instructions in previews.
mRG3bpEnT0GOSJ9qNuxk+g
Preview Fingerprint
Aperture writes its internal ID to the IPTC
Special Instructions in previews.
mRG3bpEnT0GOSJ9qNuxk+g
You can access versions by ID through
AppleScript
The Ecosystem
iPhoto Aperture Your App!
Image Kit Quicktime Core Image
Image IO
Image Capture
Do not assume the
existence of any key in
this dictionary.
After all, cameras come
from hardware
manufacturers and they
never support anything
entirely correctly.
CGImageSourceCreateImageAtIndex()
• Creates a CGImageRef from an image in
the file.
• Most image files have one image, but there
is support for multiple representations.
• CGImageSourceGetCount() tells you how
many there are.
CGImageSourceCreateThumbnailAtIndex()
• Creates a thumbnail from an index
• Control thumbnail size with the options
dictionary:
• kCGImageSourceThumbnailMaxPixelSize
#2 ImageIO Gotcha:
can’t write RAW files.
This is not your
nibware geotagging API.
The Ecosystem
iPhoto Aperture Your App!
Image Kit Quicktime Core Image
Image IO
Image Capture
Two Gotchas
• Constants for
IKImageBrowserGroupStyleKey are defined
in an enum, so pack them in NSNumber.
Two Gotchas
• Constants for
IKImageBrowserGroupStyleKey are defined
in an enum, so pack them in NSNumber.
• IKImageBrowserGroupRangeKey’s value
should be an NSRange packed into an
NSValue.
IKImageView
• Rotate
• Zoom
• Crop
• Drag & Drop
• Quite hard to customise for additional
functionality
IKImageEditPanel
IKImageEditPanel
IKImageEditPanel
IKImageEditPanel
IKSlideshow
IKSlideshow
• Think: Quick Look slideshow in Finder.
IKSlideshow
• Think: Quick Look slideshow in Finder.
• IKSlideshowDataSource:
Export Plugins
• Primary method of getting data from
Aperture and iPhoto.
Export Plugins
• Primary method of getting data from
Aperture and iPhoto.
• ObjC API-level access to Aperture
Export Plugins
• Primary method of getting data from
Aperture and iPhoto.
• ObjC API-level access to Aperture
• Focus on Aperture, mostly also valid for
iPhoto
Export Plugins
• Primary method of getting data from
Aperture and iPhoto.
• ObjC API-level access to Aperture
• Focus on Aperture, mostly also valid for
iPhoto
• SDKs for both apps from
connect.apple.com
Process
Select Export Plugin UI Rendering Post-Export
Process: Post-Export
• Upload the images to the web
• FlickrExport does all its upload
work in
exportManagerDidFinishExport
Post-Export
Process: Post-Export
• Upload the images to the web
• FlickrExport does all its upload
work in
exportManagerDidFinishExport
Post-Export
• AppleScript another application to
ingest them
Process: Post-Export
• Upload the images to the web
• FlickrExport does all its upload
work in
exportManagerDidFinishExport
Post-Export
• AppleScript another application to
ingest them
• Burn a disc
Process: Post-Export
• Upload the images to the web
• FlickrExport does all its upload
work in
exportManagerDidFinishExport
Post-Export
• AppleScript another application to
ingest them
• Burn a disc
• Add metadata back to Aperture
addKeywords:
toImageAtIndex:
• Be careful: all keywords become top-level
keywords in Aperture’s hierarchy,
addKeywords:
toImageAtIndex:
• Be careful: all keywords become top-level
keywords in Aperture’s hierarchy,
• Mess
addKeywords:
toImageAtIndex:
• Be careful: all keywords become top-level
keywords in Aperture’s hierarchy,
• Mess
• Remember: photographers == picky
curmudgeons obsessed with organisation
addCustomMetadataKeyValues:
toImageAtIndex:
• Arbitrary dictionary of key/value pairs
• Must be NSStrings
• Appear in Aperture’s metadata inspector
• Can be used in Smart Album criteria
FlickrExport Example
• FlickrExport writes back:
• Flickr ID
• Flickr URL
• Knowing the Flickr ID of a version in
Aperture lets FlickrExport do replacement
on a re-export
Custom metadata
Custom
Value
Key
[“Flickr ID” length] != 0
rating >= 3 &&
[“Flickr ID” length] == 0
iPhoto Limitations
• Can’t add metadata back to iPhoto
• Can’t create new keywords
• API has different method names, but
conceptually almost identical
Thank You
• fraser@speirs.org
• @fraserspeirs
• http://speirs.org
• http://connectedflow.com
0 comments
Post a comment