【问题标题】:Getting a snapshot of an area inside a WKWebView获取 WKWebView 内区域的快照
【发布时间】:2019-06-25 17:36:54
【问题描述】:

我正在尝试获取网站上存在的验证码的快照,以便我可以要求我的用户在不同的 UI 中键入它。 https://www.camsonline.com/InvestorServices/COL_ISAccountStatement.aspx 我使用

找到了验证码的框架
document.getElementById('captchImg').getBoundingClientRect();

但是这个框架是指 webview 而不是 iOS 窗口。我确实尝试使用

进行转换
webview.convert(CGRect(x: 685, y: 1063), to: self.view)

但这似乎并不奏效。我只想要验证码快照中的图像。我该怎么办?我已经尝试了很多关于 SO 的答案,但到目前为止没有任何帮助。

【问题讨论】:

    标签: ios webview uiwebview wkwebview


    【解决方案1】:

    我认为您可以使用 base64 编码保存缓存的图像,然后在您需要的任何地方将其转换为 UIImage。比如放回另一个 UIImageView。

    这个代码示例只是加载到self.imageView,你可以用它做任何你想做的事情。

       func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    
            let str = "var c = document.createElement('canvas'); var ctx = c.getContext('2d'); ctx.drawImage(document.getElementById('captchImg'), 100, 40); var value = c.toDataURL(); value.split(',')[1]; "
    
            self.webView.evaluateJavaScript(str) { (value, error) in
                 if error == nil {
                     if let img = value as? String {
                          self.imageView.image = self.base64ToImage(base64: img)
                     }
                 }
             }
        }
    
        func base64ToImage(base64: String) -> UIImage? {
            var img: UIImage = UIImage()
            if (!base64.isEmpty) {
                if let decodedData = NSData(base64Encoded: base64 , options: NSData.Base64DecodingOptions.ignoreUnknownCharacters) {
                    if let decodedimage = UIImage(data: decodedData as Data) {
                        img = (decodedimage as UIImage?)!
                        return img
                    }
                }
            }
            return nil
        }
    

    【讨论】:

    • 很高兴它有帮助:D
    • 我可以从上面的代码中得到图像,但由于某种原因,它没有在图像视图中居中。当我用该图像填充和图像视图时,我得到类似prnt.sc/o7almf 的验证码图像并没有真正正确地遵循contentMode 属性。我该如何解决问题?我需要显示在图像视图的中心(紫色视图)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    相关资源
    最近更新 更多