3

iPhone カメラから画像を保存し、デリゲート メソッドを管理します。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

ここで私は知る必要があります:

[info objectForKey:UIImagePickerControllerReferenceURL]

ただし、写真を撮ったばかりの場合は常に nil です。nil とは異なり、カメラロールから写真をロードします。何故ですか?

4

1 に答える 1

10

ビデオをキャプチャすると、メディアはデバイスのストレージに保存され、その URL にアクセスできます。画像をキャプチャすると、メディアはデバイスのメモリに保存され、その生データにアクセスできます。

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

    // An image
    if([info[UIImagePickerControllerMediaType] isEqualToString:@"public.image"])
        UIImage *image=info[UIImagePickerControllerOriginalImage];

    // A video
    else
        NSURL *url=info[UIImagePickerControllerMediaURL]];
}

編集: 画像の URL が nil である理由を尋ねました。ご覧のとおり、キャプチャした画像がデバイスのストレージに保存されることはありません。画像をメモリに保存する利点の 1 つは、画像をデバイスに保存したり、ネットワーク経由で送信したりする前に処理できることです。

于 2012-10-28T20:39:31.590 に答える