2011-11-21 23 views
6

ハード・ディスクの代わりにメモリから直接Webブラウザコントロールにイメージを表示するにはどうすればよいですか? RAMディスクソフトウェアを使用して仮想ドライブを作成すると、イメージソースに次のようにロードすることができます。 img src = "Z:/image.jpg" ZはRAMディスクドライブです。 NETでプログラムで行うことは可能ですか?それを行うにはMemoryStreamを使用しますか?WebBrowserコントロールの画像をメモリから直接表示するにはどうすればよいですか?

私は本当にこれについていくつかの提案をいただきたいと思います。

+0

あなたは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

+1

目的は何ですか、なぜあなたはRAMからロードする必要がありますか?あなたがパフォーマンスのためにSSDを使うことができれば。 –

+0

どのWebBrowserコントロールを使用していますか? WinFormsのもの、WPFのもの、またはSilverlightのもの –

答えて

1

イメージを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; 
} 
関連する問題