【问题标题】:How to load an in-memory image on a WinForms WebBrowser control如何在 WinForms WebBrowser 控件上加载内存中的图像
【发布时间】:2012-12-29 10:42:53
【问题描述】:

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

我曾希望使用嵌入的 Data URI 选项示例,但是这种方法是 limited 处理

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

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

【问题讨论】:

    标签: c# winforms browser filestream in-memory


    【解决方案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 的图块。

    【讨论】:

    • 感谢您的建议,但是我的应用程序可以部署到第 3 方客户端,它根本不是创建 WebServer 的选项。您能否详细说明图像平铺方法 - 听起来很有趣?
    猜你喜欢
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 2011-08-19
    • 2021-07-30
    相关资源
    最近更新 更多