iOS,如何判断一张照片是否是用户截图?如何在“照片”中删除照片



在AppStore(中国),一款名为腾讯移动管家的应用发布了一系列与照片相关的功能,包括检测照片是否是用户截图、删除照片等。

我得到了这个应用程序的截图来演示我的问题(我自己为你添加了英文文本,因为应用程序只显示中文):

这个应用程序知道哪些照片是截图,哪些不是

当你点击底部的删除按钮时,它显示:

请求用户允许删除照片

据我所知,iOS中的照片api (AssetsLibrary, phphotollibrary)没有给出照片的绝对路径,iOS SandBox也不允许应用删除用户的资产,这使得删除用户的照片几乎是不可能的。所有保存在iOS设备上的照片都遵循相同的命名系统:"IMG_001.jpg",这使得我们无法通过照片的名称来检测照片是否是截图。

但显然,这个应用程序实现了这两个功能。有人对此有什么想法吗?

谢谢!

您可以使用PHAsset的mediaSubtypes属性进行检查。

let types = phAsset.mediaSubtypes /// phAsset is a PHAsset
let isScreenshot = types.contains(.photoScreenshot) /// true if is screenshot

对于截图,它的UTI总是一个"public.png"并且与屏幕大小相同(确保你在屏幕边界宽度和高度上乘以[uisscreen scale]),只需要检查这2个元数据,你就可以很容易地识别截图。

希望对你有帮助

最新更新