如何在WinForms WebBrowser控件上加载内存中的图像

时间:2013-01-15 10:41:21

标签: c# winforms browser filestream in-memory

我正在使用C#开发.NET 3.5 WinForms项目,我希望能够直接从内存中<在 WebBrowser 控件中呈现图像的最佳方法/ strong>来源?
在内存中,我的意思是我有一组 Base64 编码的字符串格式的图像,我希望在WebBrowser控件的嵌入页面上呈现它们。

我原本希望使用嵌入式Data URI选项示例,但这种方法对于图片limited是&lt; 32KB。

我希望可以将它转换为System.Drawing.Image实例,并以某种方式在src html标记中引用此图像,如下所示:<img src="<insert reference here?>" </img>。这种技术有可能吗?

如果无法做到这一点,那么我想知道在Windows临时目录中创建文件的可行性和那里的引用?

1 个答案:

答案 0 :(得分:1)

另一种方法是设置Web服务器并通过localhost <img src='http://localhost/img.jpg'>加载图像。这可以防止在磁盘上创建临时图像。

如果您不想处理Web服务器,可以使用简单的图像平铺与上述数据URI参数相结合。单个图块可以通过以下方式获得:

Rectangle region = new Rectangle(x, y, tileWidth, tileHeight);
Bitmap tile = sourceBitmap.Clone(region, sourceBitmap.Clone.PixelFormat);

您只需为Rectangle region的不同参数重复平铺生成,直到覆盖完整的源图像为止。您可以尝试使用哪个tileWidthtileHeight来生成数据大小低于32kB的切片。