UIimage 使用 Swift 检测风景图像

UIimage Detect Landscape Image with Swift

我想从图库中读取照片

在这个函数中

 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage

现在我想知道是不是风景照我试着绑定这个代码

if(pickedImage?.size.width > pickedImage?.size.height)

但是我收到了这个错误 二元运算符 '>' 不能应用于两个 'CGFloat?' 操作数 我该如何解决这个问题

试试这个

 if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage

   { 
      if pickedImage.size.width > pickedImage.size.height 
      {
         /// landscape mode
      }

   }

}

此处的问题是您尝试使用 Optional 值而不是展开。要解包值,您可以使用 guard:

guard let pickedImage = pickedImage else { 
    // false logic here
    return 
}

if pickedImage.size.height > pickedImage.size.height {

} else {

}

顺便问一下,您确定要将 pickedImage 的身高与其自身进行比较吗?看起来很奇怪。

我找到了这个代码的解决方案? -> !

if(pickedImage!.size.width > pickedImage!.size.height)

另一种可能的解决方案是使用开关模式匹配:

switch image?.size {
case .some(let size) where size.height > size.width:
  // do something
default:
  break
}