检查上传的图片是否是截图iOS

时间:2014-03-08 17:08:28

标签: ios iphone screenshot

通过UIImagePickerController,有没有办法判断用户从其库中选择的图片是否为截图?此外,是否有与屏幕截图相关联的时间戳?我看过Get Exif data from UIImage - UIImagePickerController,但特别是屏幕截图有这些数据吗?

2 个答案:

答案 0 :(得分:2)

截图的图片没有EXIF元数据。其背后的原因是EXIF元数据主要由相机添加,包含光圈,快门速度,闪光等信息。

您还可以检查图像尺寸是否与屏幕分辨率匹配。

最后,上述规则都不是完全证据。人们可以随时拥有带有EXIF元数据(如方向)的图像和与移动屏幕相同分辨率的图像,但这种情况的可能性很低。

对于后端处理器,还可以对电池符号,网络强度等图标进行模板匹配。

答案 1 :(得分:-2)

为了解释这段代码,很好。

iPhone和iPad具有视网膜显示屏,可在保存的图像上提供“某种程度上”的独特分辨率。当您用户上传的图片包含以下分辨率时,则主要是屏幕截图。

以下分辨率组合与App Store Connect的分辨率相同,并且此处的代码与AAPL相同。更多分辨率?自己找出来,兄弟。

我最近决定清理它的2w +照片库中的成功率接近100%。

太神奇了吗?是。照片以不同的分辨率拍摄。无论如何,如果不使用AI或EXIF数据就无法分辨出截取的屏幕截图。

    if width == 312  && heigh == 390  { /* Apple Watch */ }
    if width == 640  && heigh == 960  { /* iPhone 3 + 4 */ }
    if heigh == 640  && width == 960  { /* iPhone 3 + 4 land  */ }
    if width == 640  && heigh == 1136 { /* iPhone 5 */ }
    if heigh == 640  && width == 1136 { /* iPhone 5 land */ }
    if width == 750  && heigh == 1334 { /* iPhone 6/7/8 */ }
    if heigh == 750  && width == 1334 { /* iPhone 6/7/8 land */ }
    if width == 1242 && heigh == 2208 { /* iPhone + */ }
    if heigh == 1242 && width == 2208 { /* iPhone + land */ }
    if width == 1125 && heigh == 2436 { /* iPad X  */ }
    if heigh == 1125 && width == 2436 { /* iPhone X land */ }
    if width == 1536 && heigh == 2048 { /* iPhone Air + mini */ }
    if heigh == 1536 && width == 2048 { /* iPhone Air + mini land  */ }
    if width == 2048 && heigh == 2732 { /* iPhone Pro 12.9 */ }
    if heigh == 2048 && width == 2732 { /* iPhone Pro 12.9 land */ }
相关问题