Загрузка изображений в WKWebView на macOS - PullRequest
0 голосов
/ 19 марта 2019

У меня есть приложение 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)

Проблема в том, что изображения, расположенные в папке Images на том же уровне, что и выбранный md-файл, не загружаются. Вот пример html-beeing, загруженного webView:

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

baseUrl содержит каталог-изображения с указанным изображением. Что я должен сделать, чтобы изображения загружались и отображались правильно?

1 Ответ

0 голосов
/ 19 марта 2019

В этом случае вы должны представить изображение как Base64 String, попробуйте ниже код

    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>"
...