使用exif将图像转换为NSData类型

时间:2015-06-29 05:02:30

标签: ios image nsdata exif

我有一个关于如何将带有exif数据的图像转换为NSData类型的问题。我得到的图像相当于在相机中捕获图像或从相机胶卷中获取图像。

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

选择图像后,我转到此处将exif图像转换为NSData并发送到服务器数据库。但是,我尝试了很多方法,但它失败了。当我在数据库中获取图片文件时,它丢失了图片的所有退出和元数据信息。

所以,我想问一下,有没有办法转换图像并将exif和元数据保存在NSData类型中?

谢谢大家。

1 个答案:

答案 0 :(得分:2)

您可以这样做,但如果您不需要NSData进行进一步操作,我强烈建议您将图像保存在磁盘上:

            NSDictionary *metadata = [info objectForKey:    UIImagePickerControllerMediaMetadata];
            CFURLRef url = (__bridge_retained CFURLRef)[NSURL fileURLWithPath:path];
            CFMutableDictionaryRef metadataImage = (__bridge_retained CFMutableDictionaryRef) metadata;
            NSMutableData * destData = [NSMutableData data];   
            CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)destData,kUTTypeJPEG,1,NULL);
            CGImageDestinationAddImage(destination, uiImage.CGImage, metadataImage);
            if (!CGImageDestinationFinalize(destination)) {
                DLog(@"Failed to write image to %@", path);
            }
            else {
                DLog(@"Writing image to %@", path);

            }