在 Swift 4 上为 Google ML Vision 框架旋转 UIImage

Posted

技术标签:

【中文标题】在 Swift 4 上为 Google ML Vision 框架旋转 UIImage【英文标题】:Rotating UIImage for Google ML Vision framework on Swift 4 【发布时间】:2018-07-03 02:27:36 【问题描述】:

当图像被捕获时,它默认为左方向。因此,当您将其输入到Google Vision framework 中的textDetector 时,它会变得混乱,除非您将照片朝左(右侧的主页按钮)。我希望我的应用支持两种方向。

let visionImage = VisionImage(image: image)

self.textDetector?.detect(in: visionImage, completion:  (features, error) in
    //2
    guard error == nil, let features = features, !features.isEmpty else 
        print("Could not recognize any text")
        self.dismiss(animated: true, completion: nil)
        return
    

    //3
    print("Detected Text Has \(features.count) Blocks:\n\n")
    for block in features 
    //4
        print("\(block.text)\n\n")
    
)

我已尝试使用新方向重新创建图像,但这不会改变它。

有人知道该怎么做吗?

我已经尝试了所有这些建议 How to rotate image in Swift?

【问题讨论】:

【参考方案1】:

尝试使用这个函数规范化 UIImage 对象:

import UIKit

public extension UIImage     
    public func normalizeImage() -> UIImage 
        if self.imageOrientation == UIImageOrientation.up 
            return self
        

        UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
        self.draw(in: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height))

        let normalizedImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
        UIGraphicsEndImageContext()

        return normalizedImage
    

我希望这会有所帮助,因为我通常会在出现方向问题时使用它。

【讨论】:

以上是关于在 Swift 4 上为 Google ML Vision 框架旋转 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

Swift 3 - 在 GMSMarker 上长按并打印其坐标(Google Maps iOS SDK)

如何在 Swift 上为堆栈声明“如果可选”

Swift 3 - 如何在 .xib 文件上为 UIScrollView 分配委托?

Web ML+ WebAssembly 支持实现 Google Meet 背景模糊功能

Android - 如何在 Google 地图上为 Google 徽标设置底部填充

是否可以在 Google Cloud 上为 PostgreSQL 设置自动缩放?