【问题标题】:Loading images in WKWebView on macOS在 macOS 上的 WKWebView 中加载图像
【发布时间】:2019-03-19 10:30:29
【问题描述】:

我有一个 macOS 应用程序,它允许用户通过 NSOpenPanel 选择降价文件。

let mdUrl = openPanel.urls.first!
let baseUrl = mdUrl.deletingLastPathComponent()
let md = try! String(contentsOf: mdUrl)
let html = try! Down(markdownString: md).toHTML()
webView.loadHTMLString(html, baseURL: baseUrl)

问题是位于与所选 md 文件相同级别的图像文件夹中的图像未加载。下面是 webView 加载的 html-beeing 示例:

<!DOCTYPE html>
<html>
<body>
<p><img src="Images/Exampleimage.png" alt="" /></p>
</body>
</html>

baseUrl 包含一个带有指定图像的图像目录。我应该怎么做才能让图像正确加载和显示?

【问题讨论】:

    标签: swift macos wkwebview


    【解决方案1】:

    在这种情况下,您必须将图像表示为 Base64 字符串,请尝试以下代码

        func getImageString(imageLocalPath: String) -> String? {
    
            //get UIImage from localPath
            let image:UIImage = // some method
            if let _image = image {
              // assume image is png, if not use relevant constrauction
              var data = UIImagePNGRepresentation(_image)!
    
              if let _data = data {
                let data64 = _data.base64EncodedString(options:
                    Data.Base64EncodingOptions.endLineWithCarriageReturn)
                return "<img src='data:image/\(format);base64," + data64 + "' height=200 width=400>"
            }
        }
        return nil
    }
    

    如下添加图片的字符串,应该会出现

    var data64 = getImageString(//image_local path)
    
    "<img src='data:image/\(format);base64," + data64 + "' height=200 width=400>"
    

    【讨论】:

    • 我正在尝试加载与打开的 md 文件相关的图像。如果我打开一个文件 .../RootFolder/Test.md 并且有 .../RootFolder/Images/Exampleimage.png 给定标签中的相对路径已经指向正确的位置??
    • 您是否要在 webView 中显示本地图像??
    • 如果您只是创建一个 Index.html 文件并在同一目录中创建一个包含图像的图像文件夹,然后在任何浏览器中打开包含引用图像文件夹中图像的图像标签的 Index.html ,图像将显示。 WKWebView 没有显示这些图像。
    • 真的没有像在任何普通浏览器中那样加载图像的明智方法吗?为什么平面旧 html 不起作用?
    • 如果您将图像和 html 文件都放在项目的文件夹中,则可以以平面旧 html 方式加载。只需在 xcode 项目中创建文件夹并放入 image 和 html 。然后 p> 应该可以工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多