6
如何直接從內存而不是硬盤在webBrowser控件中顯示圖像? 當我使用RAM磁盤軟件來創建虛擬驅動器時,可以通過尋址映像源來加載它,如下所示: img src =「Z:/image.jpg」Z表示RAM磁盤驅動器。是否有可能在.NET中以編程方式執行此操作?或使用MemoryStream來做到這一點?如何直接從內存中顯示webBrowser控件中的圖像?
我真的很感激這方面的一些建議。
如何直接從內存而不是硬盤在webBrowser控件中顯示圖像? 當我使用RAM磁盤軟件來創建虛擬驅動器時,可以通過尋址映像源來加載它,如下所示: img src =「Z:/image.jpg」Z表示RAM磁盤驅動器。是否有可能在.NET中以編程方式執行此操作?或使用MemoryStream來做到這一點?如何直接從內存中顯示webBrowser控件中的圖像?
我真的很感激這方面的一些建議。
您可以用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;
}
你可以試試這個http://stackoverflow.com/questions/290035/how-do-i-get-ac-sharp-webbrowser-control-to-show-jpeg-files-raw如果不行,你可以看看這個http://www.codeproject.com /KB/files/MhtBuilder.aspx並嘗試將圖像轉換爲.mhtml,然後顯示它。 – user629926
目標是什麼,你爲什麼需要從RAM加載它?如果它的性能可以使用SSD。 –
您使用哪種WebBrowser控件? WinForms之一,WPF之一,還是Silverlight之一? –