如何在iPhone上使用EXIF(GPS)和方向保存照片?

aka*_*hic 13 iphone gps exif orientation

我正在使用writeImageToSavedPhotosAlbum:metadata:completionBlock:将图像保存到相机胶卷(GPS数据在字典中传递给元数据).但是图片是错误定向的(因为我在拍照时翻转了设备).

还有另一个函数writeImageToSavedPhotosAlbum:orientation:completionBlock:但我无法传递EXIF数据.

根据文档,有kCGImagePropertyOrientation属性来手动设置方向,但我在检查设备的当前方向和保存它时遇到问题.

有没有人用EXIF数据和正确的方向实现保存图片?任何帮助将非常感激.

这是我的代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    [self dismissModalViewControllerAnimated:YES];
    [imageView setImage:image];

    if(sourceCamera) {
        //EXIF and GPS metadata dictionary
        (...)

        //saving image
        ALAssetsLibrary *al = [[ALAssetsLibrary alloc] init];       
        [al writeImageToSavedPhotosAlbum:[image CGImage]
                                metadata:dict
                         completionBlock:^(NSURL *assetURL, NSError *error) {
                             if (error == nil) {
                                NSLog(@"saved");
                             } else {
                                 NSLog(@"error");
                             }
        }];        
        [al release];
    }
}
Run Code Online (Sandbox Code Playgroud)

最好的祝愿,

一个.

Ano*_*mie 27

设置时,需要将UIImageOrientation值映射到相应的EXIF方向值kCGImagePropertyOrientation.该映射是:

UIImageOrientationUp:             1
UIImageOrientationDown:           3
UIImageOrientationLeft:           8
UIImageOrientationRight:          6
UIImageOrientationUpMirrored:     2
UIImageOrientationDownMirrored:   4
UIImageOrientationLeftMirrored:   5
UIImageOrientationRightMirrored:  7
Run Code Online (Sandbox Code Playgroud)

请注意,UIImageOrientationLeft和UIImageOrientationRight与您对文档的期望相反; 如果将方向应用于直立图像,而不是在应用方向时将提供直立图像的原始图像数据的方向,则可以获得小样本图像.

  • @BenjaminWheeler需要修改你的`ALAsset`的元数据字典.获得"ALAsset"后,以这种方式获取元数据字典:`myMetadataDictionary = [[myAsset defaultRepresentation] metadata]`.然后,设置方向:`myMetadataDictionary [(NSString*)kCGImagePropertyOrientation] = orientation`,其中`orientation`是@Anomie上面给出的整数之一. (3认同)