我可以通过截图检测导入的ALAsset照片吗?

我有一个imagePickerController用于从库中导入照片到我的应用程序。

当在ALAssetsLibraryAssetForURLResultBlock ,我试图找出我在块中获得的ALAsset是作为屏幕截图拍摄的照片,还是照相机拍摄的“真正”照片。

我试图通过ALAsset的元数据字典,但找不到任何可能适合的标志/指示。

有人有主意吗?

对于屏幕截图来说,它的UTI总是一个“public.png”,与屏幕尺寸相同(确保你在屏幕边界宽度和高度上乘以[UIScreen scale]),只需要检查这2个元数据,就可以轻松识别屏幕截图。

元数据添加到UIImage,同时保存到照片库 。 UIImage的相同的元数据可以用来知道它的截图是否。

请参阅Save_Photo_to_Album_with_Metadata

那么,我正在研究和试验..而我发现的最接近的解决scheme是基于这样一个事实,即iPhone屏幕截图不会产生EXIFlogging(而所有其他生成的照片都会生成它们)。

因此,一旦在拾取器中select了一张照片,我正在检查照片的元数据是否包含EXIFlogging,如果没有 – 我得出结论:照片是截图。

现在我发现它是“尽善尽美”的解决scheme,尽pipe它不是官方的解决scheme。

干杯。