iOS |如何以编程方式识别全景图像

时间:2018-02-22 05:48:45

标签: ios swift panoramas

是否有任何方法或技术来识别位图(png / jpeg)实际上是360度全景图像或普通图像。在iOS中,快速区分全景图像与正常图像的机制是什么。

3 个答案:

答案 0 :(得分:0)

全景图只是宽度和高度之间比例较大的图片(反之亦然)。

没有最小尺寸,但会有最大尺寸(可能)。

标准照片的比例约为4:3,因此您可以找到该比例并确定它是否为全景照片。

您可以执行以下操作:

let smallest = min(image.size.width, image.size.height)
let largest = max(image.size.width, image.size.height)

let ratio = largest/smallest

let maximumRatioForNonePanorama = 4 / 3 // check with your ratio 

if ratio > maximumRatioForNonePanorama {
    // it is probably a panorama
}

但是,请注意,捕捉全景图时,您可以在不移动相机的情况下启动它,这样它就可以成为普通照片。

这就是为什么你必须使用这样的比例。我认为没有这个(尚)的旗帜。

答案 1 :(得分:0)

PHAsset具有一个名为mediaSubtypes的属性。只需检查此数组是否包含全景图子类型即可。

if mediaSubtypes.contains(.photoPanorama) {
    // ...
}

答案 2 :(得分:-1)

全景图像具有不同的分辨率,其比率将 2:1 4:1 10:1 。要在代码段下面识别全景图像,请使用

 let smallest = min(YOUR_IMAGE.size.width, YOUR_IMAGE.size.height)
 let largest = max(YOUR_IMAGE.size.width, YOUR_IMAGE.size.height)
 let ratio = largest/smallest
 if (ratio >= CGFloat(2/1)) || (ratio >= CGFloat(4/1)) || (ratio >= CGFloat(10/1)) {

    // Panorama image

 } else {

    //NON -Panorama image 

 }

希望这会对你有所帮助