忍者ブログ
  • 2024.10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/23 01:00 】 |
iPhone内の画像リストを表示する・カメラを使用する
使い方は、曲のリスト表示するときと同じ。


曲のときと違って、フレームワークの追加やimportなどは特にする必要がない。
UIKitに含まれているようだ。

1.
呼び出し部の記述

UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypePhotoLibrary;//フォトアルバム
if ([UIImagePickerController isSourceTypeAvailable:sourceType]) {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = sourceType;
[self presentModalViewController:picker animated:YES];
}


ソースタイプは3種類ある。

UIImagePickerControllerSourceTypeSavedPhotosAlbum
カメラロールが開く。カメラロール下の画像が選択できる。

UIImagePickerControllerSourceTypePhotoLibrary
Photo Albums が開く。
Photo Albums下には、 Camera Roll, PhotoLibrary, 前回読み込んだiPhoto などのディレクトリがあり、どこかから画像を選択できる。

UIImagePickerControllerSourceTypeCamera
カメラが起動し、撮影ができる。



2.
デレゲートクラスにプロトコル記述。

宣言

@interface XXXX : YYYY {
}

//iOS3.0以降、非推奨になっている。定義しなくても良いだろう
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo;

//画像を選択したときに呼ばれる
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info;

//キャンセルしたときに呼ばれる
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker;
@end


定義

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSLog(@"%@", [info description]);

UIImage *image = (UIImage*)[info objectForKey:UIImagePickerControllerOriginalImage]; //このimageが取得できれば、あとはなんなりと
NSLog(@"%@", [image description]);

[self dismissModalViewControllerAnimated:YES];
}



infoの中身は、画像を選択した場合、画像そのもの。
動画を選択した場合、URL(ファイルパス)が格納されている。

infoの中身を出してみた。

NSLog(@"%@", [info description]);

NSLog(@"mediaType :%@", [info objectForKey:UIImagePickerControllerMediaType]);
NSLog(@"orignImage :%@", [(UIImage *)[info objectForKey:UIImagePickerControllerOriginalImage] description]);
NSLog(@"editedImage :%@", [(UIImage *)[info objectForKey:UIImagePickerControllerEditedImage] description]);
CGRect rect = [(NSValue *)[info objectForKey:UIImagePickerControllerCropRect] CGRectValue];
NSLog(@"rect :(%f,%f,%f,%f)", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
NSLog(@"mediaURL :%@", [info objectForKey:UIImagePickerControllerMediaURL]);
NSLog(@"mediaRefURL :%@", [info objectForKey:UIImagePickerControllerReferenceURL]);
NSLog(@"mediaMetadata:%@", [[info objectForKey:UIImagePickerControllerMediaMetadata] description]);


でも、値が入っていないキーが多い。
値があったのは以下の3つだけだった。

{
UIImagePickerControllerMediaType = "public.image";
UIImagePickerControllerOriginalImage = "";
UIImagePickerControllerReferenceURL = "assets-library://asset/asset.PNG?id=1000000348&ext=PNG";
}


またまたついでに、各キーの定義は以下のように書かれていた。

UIKIT_EXTERN NSString *const UIImagePickerControllerMediaType; // an NSString (UTI, i.e. kUTTypeImage)
UIKIT_EXTERN NSString *const UIImagePickerControllerOriginalImage; // a UIImage
UIKIT_EXTERN NSString *const UIImagePickerControllerEditedImage; // a UIImage
UIKIT_EXTERN NSString *const UIImagePickerControllerCropRect; // an NSValue (CGRect)
UIKIT_EXTERN NSString *const UIImagePickerControllerMediaURL; // an NSURL
UIKIT_EXTERN NSString *const UIImagePickerControllerReferenceURL __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_1); // an NSURL that references an asset in the AssetsLibrary framework
UIKIT_EXTERN NSString *const UIImagePickerControllerMediaMetadata __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_4_1); // an NSDictionary containing metadata from a captured photo


PR
【2011/08/18 16:15 】 | iPhone | 有り難いご意見(0) | トラックバック()
<<Swingまとめ | ホーム | サウンドを鳴らす>>
有り難いご意見
貴重なご意見の投稿














虎カムバック
トラックバックURL

<<前ページ | ホーム | 次ページ>>