0

写真のメタデータを含む iOS 用のカメラ アプリを作成しています。assetlibrary を使用してメタデータを書き込みました。メソッド「writeImageDataToSavedPhotoAlbum」には、アセット URL を返す完了ブロックがあります。メタデータと画像を取得できるように、この URL を保存する必要があると思います。ただし、情報を取得するためにassetURLをどうすればよいかわかりません。

私のコード:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:(__bridge NSString *)kUTTypeMovie]){
    NSURL *urlOfVideo = [info objectForKey:UIImagePickerControllerMediaURL];
} else if ([mediaType isEqualToString:(__bridge NSString *)kUTTypeImage]) {

    CLLocation *location = [[CLLocation alloc] init];

    NSDictionary *metadata = [self getGPSDictionaryForLocation:location];

    UIImage *theImage = [info objectForKey:UIImagePickerControllerOriginalImage];
    ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];

    NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(theImage)];
    [library writeImageDataToSavedPhotosAlbum:imageData metadata:metadata completionBlock:^(NSURL *assetURL, NSError *error){
        if (error) {
            NSLog(@"error");
        } else {

////what do I do with the assetURL?

            self.imageURL = assetURL;
            NSLog(@"url %@", self.imageURL);

        }
    } ];

}


[picker dismissViewControllerAnimated:YES completion:nil];
}
4

1 に答える 1

0

以下のコードを使用して、ALAsset URL を使用して画像を読み込むことができます。

 UIImage *myImage = nil;

 ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset)
 {

    CGImageRef iref = [myasset aspectRatioThumbnail];         

   dispatch_sync(dispatch_get_main_queue(), ^{

       myImage = [UIImage imageWithCGImage:iref];

   });//end block


};
ALAssetsLibraryAccessFailureBlock failureblock  = ^(NSError *myerror)
{
    NSLog(@"Cant get image - %@",[myerror localizedDescription]);
};
NSURL *asseturl = //assign your ALAsset URL here
ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init];
[assetslibrary assetForURL:asseturl 
               resultBlock:resultblock
              failureBlock:failureblock];
于 2013-02-11T03:02:43.147 に答える