【发布时间】:2018-03-22 19:32:36
【问题描述】:
我正在尝试使用 PHPhotoLibrary 获取存储在照片库中的图片的创建日期。该代码适用于所有图片,除了通过单击主页和电源按钮在手机上创建为屏幕截图的几个 PNG 文件。当我遍历 PHFetchResult 并加载 CIImage 时,PNG 文件不包含 TIFF 字典,其中包含所有其他 JPG 文件的创建日期。我已经广泛搜索了stackoverflow,发现了类似的问题,但还没有找到解决方案。我尝试以不同的方式加载文件,并且还在 Build Settings 中将 compress PNG files 设置设置为 NO。当我在 PHFetchResult 中遍历名为 pic 的 PHAsset 时,PNG 图像属性返回一个只有五个元素且没有 TIFF 字典的字典。 JPG 文件都返回一个更大的字典,包括 TIFF 字典,我可以在其中找到创建日期。这是我当前的代码,它为 PNG 文件返回一个空的 pictiff 字典:
[imagemanager requestImageDataForAsset:pic options:ro resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
CIImage *ciimage = [CIImage imageWithData:imageData];
NSMutableDictionary *exif = [NSMutableDictionary dictionary];
[exif addEntriesFromDictionary:ciimage.properties];
// Get file name
NSURL *picpath = [info objectForKey:@"PHImageFileURLKey"];
NSString *myfilename = [picpath lastPathComponent];
// Get creation date
NSDictionary *pictiff = exif[@"{TIFF}"];
NSString *picdate = pictiff[@"DateTime"];
非常感谢有关获取这些 PNG 文件的创建日期的帮助。
部署目标 8.0、Xcode 7.3.1、iPhone 6、iOS 8.4
【问题讨论】:
-
使用
pngcheck或类似程序检查任何元数据。如果没有,那么唯一的“日期”在 OS 文件数据中。 -
没有 (AFAIK) 以 PNG 格式存储 Exif (TIFF) 数据的标准方法(如果建议,
'eXIf',但它不在 W3C/ISO 标准中,因此不多用过的)。不过,如果 XMP 数据存在(在带有'XML:com.adobe.xmp'关键字的'iTXt'块中),您可能会从 XMP 数据中获得相同的信息。
标签: properties png metadata tiff