Существует ли какой-либо метод или техника для определения растрового изображения (png/jpeg), которое на самом деле является панорамным изображением на 360 градусов или обычным изображением. Каков механизм, позволяющий отличить панорамное изображение от обычного изображения в Swift для iOS.
iOS | Как идентифицировать панорамное изображение программно
Ответы (3)
Панорама — это просто картинка с большим соотношением ширины и высоты (или наоборот).
Минимального размера нет, но будет максимальный (вероятно).
Соотношение стандартной фотографии составляет около 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
}
Но также обратите внимание, что при съемке панорамы вы можете начать и остановить ее, вообще не перемещая камеру, поэтому это может быть просто обычная фотография.
Вот почему вы должны использовать такое соотношение. Я думаю, что для этого нет флага (пока).
панорамные изображения имеют разное разрешение, их соотношение будет 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
}
Надеюсь, что это поможет вам
PHAsset
имеет свойство с именем mediaSubtypes
. Просто проверьте, содержит ли этот массив подтип панорамы.
if mediaSubtypes.contains(.photoPanorama) {
// ...
}
PHAsset
и егоmediaSubtypes
- person rmaddy   schedule 22.02.2018