iOS-实现图片的IPTC信息提取
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;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
