2014年1月31日金曜日

[iOS][Objective-C]UIImagePickerControllerでサムネイルを取得する


どうも。

UIImagePickerControllerを使って、
フォトアルバムから画像を引っ張ってくる。
というのも頻出。
その時に、
画像の本体とは別に、
カメラロールで表示されてるサムネイルが欲しい、
ということもあったりする。

そんなときは、
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;
の中で、

NSURL* refUrl = [info objectForKey:UIImagePickerControllerReferenceURL];
         
ALAssetsLibrary *assetsLib = [[ALAssetsLibrary alloc] init];
         
[assetsLib assetForURL:refUrl resultBlock:^(ALAsset *asset) {

    // カメラロールで表示されているサムネイルを取得
    thumbnailImage = [[UIImage alloc] initWithCGImage:[asset thumbnail]];
             
} failureBlock:^(NSError *error) {

    // error handling
}];

なんてしてやれば、OK。

サムネイルでなく、普通に画像取得したい場合は、
上記のような面倒なことしなくても、

selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage];

などとしてやれば一発。

thumbnailImageやselectedImageは、
UIImage* として、
画面のメンバ変数かなんかで定義してあるものとして。

諸般の事情から、
一定の範囲内にリサイズする。
という要件もセットだったりするが、
それについては下記のエントリを参照。
http://synonym-of-raspberry.blogspot.jp/2014/01/iosobjective-cuiimage.html



それでは。
ちゃお☆


まこぴー。