【问题标题】:Getting a snapshot of an area inside a WKWebView获取 WKWebView 内区域的快照
【发布时间】:2019-06-25 17:36:54
【问题描述】:
【问题讨论】:
标签:
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
}
【讨论】:
-
-
我可以从上面的代码中得到图像,但由于某种原因,它没有在图像视图中居中。当我用该图像填充和图像视图时,我得到类似prnt.sc/o7almf 的验证码图像并没有真正正确地遵循contentMode 属性。我该如何解决问题?我需要显示在图像视图的中心(紫色视图)