2012-10-18 96 views
4

我有一个imagePickerController用于从库中导入照片到我的应用程序。我可以通过截图检测导入的ALAsset照片吗?

当在ALAssetsLibraryAssetForURLResultBlock,我试图找出我在块中的ALAsset是一张照片作为一个屏幕截图或是一张“真正”的照片,由相机拍摄。

我试图去通过ALAsset的元数据字典,但找不到任何标志/迹象表明可能适合。

任何人有任何想法?

+0

因为你需要检查照片的大小是460 * 320那么从屏幕截图拍摄的照片我认为这是检测屏幕截图的唯一方法? –

+0

@neonsamuel - 谢谢,但我不认为我们应该依靠的大小(特别是当iPhone 5的新比率是在这里...) – Guys

+0

所以你需要包括为:-( –

回答

0

好,我是研究和试验..我已经找到了最接近的解决方案是基于一个事实,即iPhone屏幕截图不产生EXIF记录(而其他所有生成的照片做他们产生)。

因此,一旦照片在选择器中选择,我检查,如果照片的元数据包含了EXIF记录,如果它不 - 我的结论是照片是截图。

我发现它是“尽善尽美”的解决方案,现在,虽然它不是一个正式的一个。

干杯。

+1

对于从网页保存的照片,也可能没有EXIF元数据。 – evanchin

0

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

参考Save_Photo_to_Album_with_Metadata

+0

谢谢,但我说的是另一个应用程序(而不是我的)拍摄的照片 - 我无法控制保存时写入的元数据.. – Guys

2

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

相关问题