【问题标题】:Can I detect if an imported ALAsset photo was taken via screenshot?我可以检测导入的 ALAsset 照片是否是通过屏幕截图拍摄的吗?
【发布时间】:2012-10-18 11:33:25
【问题描述】:

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

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

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

有人有什么想法吗?

【问题讨论】:

  • 因为你需要检查照片的大小是 460*320 然后从屏幕截图中捕获照片我认为这是检测屏幕截图的唯一方法?
  • @neonsamuel - 谢谢,但我认为我们不应该依赖尺寸(特别是当 iphone 5 的新比例在这里时......)
  • 所以你需要再包含一个条件:-(

标签: iphone objective-c ios alassetslibrary


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    参考Save_Photo_to_Album_with_Metadata

    【讨论】:

    • 谢谢,但我说的是由另一个应用程序(而不是我的..)拍摄的照片 - 我无法控制保存时写入的元数据..
    【解决方案3】:

    嗯,我正在研究和试验.. 我找到的最接近的解决方案是基于 iPhone 屏幕截图不会产生 EXIF 记录(而所有其他生成的照片都会产生它们)这一事实。

    因此,一旦在选择器中选择了一张照片,我将检查照片的元数据是否包含 EXIF 记录,如果不包含 - 我断定照片是屏幕截图。

    我发现它是目前“尽善尽美”的解决方案,尽管它不是官方解决方案。

    干杯。

    【讨论】:

    • 对于从网页保存的照片也可能没有 EXIF 元数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    相关资源
    最近更新 更多