iOS-实现图片的IPTC信息提取

iOS-实现图片的IPTC信息提取 //判断字典是否为空#define NULLDic(dic) ((dic == nil)||[dic isKindOfC

iOS-实现图片的IPTC信息提取

//判断字典是否为空
#define NULLDic(dic) ((dic == nil)||[dic isKindOfClass:[NSNull class]]||dic == 0)
///获取图片IPTC信息
+ (NSDictionary *)getImageDescriptionStrFromData:(NSData *)imageData {CGImageSourceRef imageSource = CGImageSourceCreateWithData((CFDataRef)imageData, NULL);CFDictionaryRef imageInfo = CGImageSourceCopyPropertiesAtIndex(imageSource, 0,NULL);//图片标题NSString *titleStr = @"";//图片描述NSString *contentStr = @"";//图片拍摄时间NSString *shootTimeStr = @"";//tiffCFDictionaryRef tiffRef = CFDictionaryGetValue(imageInfo, kCGImagePropertyTIFFDictionary);NSDictionary *tiffRefDic = (__bridge NSDictionary *)tiffRef;if (!NULLDic(tiffRefDic)) {CFStringRef tiffStringRef = CFDictionaryGetValue(tiffRef , kCGImagePropertyTIFFImageDescription);NSString *tiffStr = (__bridge NSString *)tiffStringRef;if ([tiffStr containsString:@" "]) {NSRange blankRange = [tiffStr rangeOfString:@" "];titleStr = [tiffStr substringToIndex:blankRange.location];contentStr = [tiffStr substringFromIndex:blankRange.location + blankRange.length];} else {contentStr = tiffStr;}}//拍摄时间CFDictionaryRef exifRef = CFDictionaryGetValue(imageInfo, kCGImagePropertyExifDictionary);NSDictionary *exifRefDic = (__bridge NSDictionary *)exifRef;if (!NULLDic(exifRefDic)) {CFStringRef exifStringRef = CFDictionaryGetValue(exifRef , kCGImagePropertyExifDateTimeOriginal);shootTimeStr = (__bridge NSString *)exifStringRef;NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];[dateFormatter setDateFormat:@"yyyy:MM:dd HH:mm:ss"];NSDate *timeDate = [dateFormatter dateFromString:shootTimeStr];[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];shootTimeStr = [dateFormatter stringFromDate:timeDate];}NSDictionary *iptcDic = @{@"title":titleStr?:@"",@"content":contentStr?:@"",@"shootTime":shootTimeStr?:@"",};return iptcDic;
}