将带有 exif 的图像转换为 NSData 类型
Convert image with exif to NSData type
我有一个关于如何将带有 exif 数据的图像转换为 NSData 类型的问题。我获取图像而不是在相机中捕获图像或从相机胶卷中获取图像。
(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
选好图片后,我到这里把exif格式的图片转成NSData,发到服务器数据库。但是,我尝试了很多方法但都失败了。当我在数据库中获取图片文件时,它丢失了图片的所有出口和元数据信息。
所以,我想问一下,有什么方法可以转换图像并保留 NSData 类型的 exif 和元数据?
谢谢大家
你可以做类似的事情,但如果你不需要 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);
}
我有一个关于如何将带有 exif 数据的图像转换为 NSData 类型的问题。我获取图像而不是在相机中捕获图像或从相机胶卷中获取图像。
(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
选好图片后,我到这里把exif格式的图片转成NSData,发到服务器数据库。但是,我尝试了很多方法但都失败了。当我在数据库中获取图片文件时,它丢失了图片的所有出口和元数据信息。
所以,我想问一下,有什么方法可以转换图像并保留 NSData 类型的 exif 和元数据?
谢谢大家
你可以做类似的事情,但如果你不需要 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);
}