繁体   English   中英

如何直接从内存中显示webBrowser控件中的图像?

[英]How can I show an image in webBrowser control directly from memory?

如何直接从内存而不是硬盘在webBrowser控件中显示图像? 当我使用RAM磁盘软件创建虚拟驱动器时,可以像下面这样加载图像源:img src =“Z:/image.jpg”Z是RAM磁盘驱动器。 是否可以在.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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM