【问题标题】:InMemory HTML and Images for .NET MAUI WebView.NET MAUI WebView 的 InMemory HTML 和图像
【发布时间】:2022-12-12 05:34:33
【问题描述】:
            WebView webView = new WebView
            {
                Source = new HtmlWebViewSource
                {
                    Html = @"<!DOCTYPE html><HTML><BODY><H1>.NET MAUI</H1><P>Welcome to WebView.</P><img src=""myimg.jpg"" alt=""My Image"" width=""500"" height=""600""></BODY></HTML>",

                },
            };

我想写这样的东西。内存中有要显示的 HTML 字符串。 图像、音频和潜在的视频也应该从内存中加载。

我必须做些什么才能将处理程序添加到 webView 或 webView.Source 中,当图像应该被加载时,我可以返回一个 byte[] 数据应该被解释为图像、声音或视频?

我在网上搜索并找到了一些想法

webView.Source.Load(new MauiWKWebView());

但是我没有 ASP.NET 项目...

https://mikegrant.org.uk/2022/01/31/maui-app-icons-and-images.html 如果将图像添加为静态资源,它会起作用。但是我的媒体数据存储在数据库中。

我是 MAUI 的初学者……所以可能很容易。

【问题讨论】:

  • Image / Load an image from a stream 显示 C# ... Source = ImageSource.FromStream(() =&gt; stream)。在您显示的代码之前将图像从数据库加载到内存流中。 (我不知道 Load 是否可以延迟;首先让它以这种方式工作。)
  • 您可以开发一个网络应用程序并将您的媒体数据添加到其中,然后您可以将媒体数据显示到 webview。

标签: c# .net xaml webview maui


【解决方案1】:

在使用WebView 时,我所知道的渲染图像的唯一方法是将其内容设置为base64 字符串。
这样做,您的示例将如下所示:

var htmlString = @"<!DOCTYPE html>
<HTML>
<BODY>
<H1>.NET MAUI</H1>
<P>Welcome to WebView.</P>
<img src=""data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg=="" alt=""Red dot"">
</BODY>
</HTML>";

var webView = new WebView
{
    Source = new HtmlWebViewSource
    {
      Html = htmlString
    }
};

假设您有 byte[] 形式的图像数据,您可以使用它来将其转换为 base64 string

var imageBytes = ...;
var base64ImageString = System.Convert.ToBase64String(imageBytes);

【讨论】:

    猜你喜欢
    • 2022-09-29
    • 2022-11-13
    • 2022-06-18
    • 2022-12-17
    • 2022-12-24
    • 2023-01-31
    • 2023-02-07
    • 2023-01-17
    • 2023-01-31
    相关资源
    最近更新 更多