gpt4 book ai didi

c# - 如何直接从内存中在 webBrowser 控件中显示图像?

转载 作者:太空狗 更新时间:2023-10-29 21:59:09 25 4
gpt4 key购买 nike

如何直接从内存而不是硬盘在 webBrowser 控件中显示图像?当我使用 RAM Disk 软件创建虚拟驱动器时,可以寻址图像源以像这样加载它:img src = "Z:/image.jpg"表示 Z 是一个 RAM Disk 驱动器。是否可以在 .NET 中以编程方式执行此操作?或者使用 MemoryStream 来做到这一点?

我非常感谢有关此的一些建议。

最佳答案

您可以使用 base64 对图像进行编码。例如

<img src="data:image/gif;base64,MyImageDataEncodedInBase64=" alt="My Image data in base 64" />

这里是一个完整的例子,说明了如何做到这一点:

using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace ImageEncodedInBase64InAWebBrowser
{
[ComVisible(true)]
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
string url = Directory.GetCurrentDirectory() + "\\page.html";
webBrowser1.Url = new Uri(url);
webBrowser1.ObjectForScripting = this;
}

private void button1_Click(object sender, EventArgs e)
{
string imageInBase64 = ReadImageInBase64();
webBrowser1.Document.InvokeScript("setImageData", new[] { imageInBase64 });

}

private string ReadImageInBase64()
{
string imagePath = Directory.GetCurrentDirectory() + "\\opensource.png";
using (var fs = new FileStream(imagePath, FileMode.Open, FileAccess.Read))
{
var buffer = new byte[fs.Length];
fs.Read(buffer, 0, (int)fs.Length);
return Convert.ToBase64String(buffer);
}
}
}
}

还有这段 Javascript 代码:

function setImageData(imageBase64) {
var myImg = document.getElementById("myImg");
myImg.src = "data:image/png;base64," + imageBase64;
}

关于c# - 如何直接从内存中在 webBrowser 控件中显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219694/

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