2 つのケースで UIImagePickerController を使用しています
- フォト ライブラリで既存の画像を選択するには
- 新しい写真を撮る
最初のケースでは、ライブラリから画像を選択すると、delegate メソッドで URL を簡単に取得できます。
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Get the URL
NSURL *url = [info valueForKey:UIImagePickerControllerReferenceURL];
...
}
しかし、新しい写真を撮ったとき、その画像はまだフォト ライブラリになく、URL もありません。そのため、まずライブラリに画像を追加する必要があります。では、新しいアセットの URL を取得するにはどうすればよいでしょうか。
フォト ライブラリに画像を追加するコードは次のとおりです。
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Get the image
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
// Add the image in the library
[[PHPhotoLibrary sharedPhotoLibrary]
performChanges:^
{
// Request creating an asset from the image.
PHAssetChangeRequest *createAssetRequest = [PHAssetChangeRequest creationRequestForAssetFromImage:image];
// Get the URL of the new asset here ?
...
}
completionHandler:^(BOOL success, NSError *error)
{
if (!success) { ...; return; }
// Get the URL of the new asset here ?
...
}
];
}