新しいiOSアプリをリリースしたのでお知らせします。
Cameramatic
cameramaticはシンプルなiPhone/iPod touch向けのトイカメラアプリです。
難しい設定は一切不要で、付属しているフィルタとフレーム組み合わせると普通とはちょっと雰囲気の違う写真を簡単に撮影することが可能になっています。
Cameramatic
http://www.mudaimemo.com/iphone/cameramatic/
新しいiOSアプリをリリースしたのでお知らせします。
iOS4になってから画像のEXIFを読み込んだり書き込んだりすることができるようになりました。
UIImagePickerを利用していればdelegateで呼ばれるメソッドの引数にメタデータが格納されています。
カメラロールに保存する場合は ALAssetsLibrary:writeImageToSavedPhotosAlbum:metadata:completionBlock:
を使えばメタデータも一緒に格納できます。(iOS4.1以上)
ただ、画像のメタデータを直接書き換える方法がよく分からなくてハマってしまいました。
検索してもめぼしい情報があまり見当たらず四苦八苦して実現したので一応メモしておきます。
#import <ImageIO/ImageIO.h>
#import <MobileCoreServices/UTCoreTypes.h>
- (NSData *)addMetadata:(UIImage *)image {
NSMutableData *imageData = [[[NSMutableData alloc] init] autorelease];
// メタデータ
NSMutableDictionary *metadata = [NSMutableDictionary dictionary];
// メタデータ: 画像の高さと幅
[metadata setObject:[NSNumber numberWithInt:1000]
forKey:(NSString *)kCGImagePropertyPixelHeight];
[metadata setObject:[NSNumber numberWithInt:1000]
forKey:(NSString *)kCGImagePropertyPixelWidth];
// メタデータ: Exif
NSMutableDictionary *exif = [NSMutableDictionary dictionary];
exif = [metadata objectForKey:(NSString *)kCGImagePropertyExifDictionary];
[exif setObject:@"ユーザーコメント" forKey:(NSString *)kCGImagePropertyExifUserComment];
[metadata setObject:exif forKey:(NSString *)kCGImagePropertyExifDictionary];
// CGImageDestination を利用して画像とメタデータをひ関連付ける
CGImageDestinationRef dest;
dest = CGImageDestinationCreateWithData((CFMutableDataRef)imageData, kUTTypeJPEG, 1, nil);
CGImageDestinationAddImage(dest, image.CGImage, (CFDictionaryRef)metadata);
CGImageDestinationFinalize(dest);
CFRelease(dest);
return imageData;
}