方法一:知道照片URL
//新建CGImageSourceRef对象
CGImageSourceRef*imageRef= CGImageSourceCreateWithURL((CFURLRef)imageUrl, NULL);
//获取照片信息
NSDictionary*imageProperty=(NSDictionary*)CGImageSourceCopyPropertiesAtIndex(_imageRef, 0, NULL);
//获取照片EXIF信息
NSDictionary*ExifDictionary= [imagePropertyvalueForKey:(NSString*)kCGImagePropertyExifDictionary];
方法二:从UIimage中获取
//将UIimage转换为NSData
NSData *imageData=UIImageJPEGRepresentation(self.currentPhoto.image, 1.0);
//将NSData转换为CFDataRef并新建CGImageSourceRef对象
CGImageSourceRefimageRef=CGImageSourceCreateWithData((CFDataRef)imageData, NULL);
NSDictionary*imageProperty=(NSDictionary*)CFBridgingRelease(CGImageSourceCopyPropertiesAtIndex(imageRef,0, NULL));
NSDictionary*ExifDictionary=[imagePropertyvalueForKey:(NSString*)kCGImagePropertyExifDictionary];
使用imageIO获取图片的exif信息
一幅图片除了包含我们能看见的像素信息,背后还包含了拍摄时间,光圈大小,曝光等信息。UIImage类将这些细节信息都隐藏了起来,只提供我们关心的图片尺寸,图片方向等。我们可以通过imageIO框架获取到图片背后的所有信息,下面就让我们一起看看。
imageIO框架是iOS中偏底层一点儿的框架,它内部提供的接口都是C风格的,关键数据也都是使用CoreFoundation进行存储。庆幸的是CoreFoundation中有很多数据类型都可以上层的数据Foundation框架中的数据类型进行无缝桥接。这也就大大方便了我们对图片信息的操作。
CGImageSourceRef是整个imageIO的入口,通过它我们可以完成从文件的加载图片。加载完成以后我们就得到一个CGImageSourceRe