gpt4 book ai didi

ios - 获取 WKWebView 内某个区域的快照

转载 作者:行者123 更新时间:2023-11-28 23:30:29 26 4
gpt4 key购买 nike

我正在尝试获取网站上显示的验证码的快照,以便我可以要求我的用户在不同的 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 的答案,但到目前为止没有任何帮助。

最佳答案

我认为你可以使用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
}

关于ios - 获取 WKWebView 内某个区域的快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56759340/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com