gpt4 book ai didi

c# - 在 UWP WebView 控件中显示本 map 片

转载 作者:太空狗 更新时间:2023-10-29 22:57:12 25 4
gpt4 key购买 nike

我需要编写代码将一些 HTML(通过其他方式从外部源接收)加载到 WebView 并显示此 HTML 中引用的图像。这些图像将本地存储在 Windows.Storage.ApplicationData.Current.LocalFolder 中的某个位置。

use local image to display in webview for windows phone 8.1 上的建议都没有或 Use local images in Webbrowser control为我工作。如果我使用 web.NavigateToString(html) 加载这样的 HTML:

<html><head></head><body>A <img src="file:///c:/Users/idh/AppData/Local/Packages/d783af9f-88eb-42f5-ab0f-abb025f32baa_5cy2zb9g43kb2/LocalState/folder/image001.jpg"> B</body></html>

我只显示 A B。我在 file:、ms-appx: 和相对路径而不是 file: 之后尝试了斜杠和反斜杠、双斜杠和三斜杠等。图像永远不会显示。同时,如果我将其保存在 HTML 文件中并在我的应用程序外部打开它,它会正常显示。我也成功地保存和读取了这些文件(它们实际上出现在该文件夹中,因为我的应用程序创建了它们,因此未经授权的访问不是问题)。 package.manifest 确实包括专用网络。

我最好不要使用 base64 嵌入、自定义 uri 解析器和其他特殊技术,因为我不是应用程序的实际开发人员。我制作了一个获取 HTML 并将图像保存到本地存储的库,现在我需要演示一种易于使用的方法来可视化 WebView 中存储的内容,就像我之前对普通 .NET 框架所做的那样。 IE。实际上,我正在为使用我的库的开发人员编写示例,然后这些人将使用我的示例来处理此 HTML 和图像。

作为最后的手段,我最终可以为我的示例的 UWP 版本编写 base64 或自定义解析器(而对于其他平台,如普通 .NET 框架,相同的过程要容易得多)。但我想至少确保在源 HTML 中为图像选择正确 URL 的直接途径是不可能的,我不会最终遇到这样的情况,即我写了一些非常复杂的东西,然后有人在 UWP 应用程序中经验丰富揭示了我过度设计了东西。 IE。一些专家意见“不,这在 UWP 中是不可能的,你必须使用 base64 嵌入或自定义 URI 解析”对我也有用。

最佳答案

尽管NavigateToString支持引用外部文件(如 CSS、脚本、图像和字体)的内容。但它仅支持使用ms-appx-web 方案的应用程序包中的内容,以及使用httphttps 的网页内容URI 方案。它不能与位于应用程序本地文件夹中的 Assets 一起使用。因此,使用 file:///ms-appdata:///ms-appx:/// 方案在这里不起作用.

要实现您想要的效果,您可以使用Base64 编码图像自定义 URI 解析器。此外,我认为您可以将 html 字符串存储到存储这些图像 Assets 的同一子文件夹下的文件中。在 html 中,您可以使用相对 URI 来引用这些 Assets ,如 my previous answer 中的内容.然后使用 Navigate使用 Uri 的方法使用 ms-appdata scheme .例如:

var html = "<html><head></head><body>A <img src=\"image001.jpg\"> B</body></html>";

var folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("folder", CreationCollisionOption.OpenIfExists);
var file = await folder.CreateFileAsync("html.html", CreationCollisionOption.OpenIfExists);
await FileIO.WriteTextAsync(file, html);

webView.Navigate(new Uri("ms-appdata:///local/folder/html.html"));

关于c# - 在 UWP WebView 控件中显示本 map 片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401047/

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