我正在尝试使用 C# Windows 窗体应用程序将本地 HTML 文件转换为位图图像。为此,我正在使用内存流读取 HTML 文件。但是在将内存流传递给 Bitmap 对象后,它说“参数无效”。
下面是示例代码
MemoryStream stm = new MemoryStream(data); 位图 f_Bitmap = (Bitmap)Image.FromStream(stm);
请提供如何将 HTML 文件转换为位图图像的解决方案。
谢谢。
我正在尝试使用 C# Windows 窗体应用程序将本地 HTML 文件转换为位图图像。为此,我正在使用内存流读取 HTML 文件。但是在将内存流传递给 Bitmap 对象后,它说“参数无效”。
下面是示例代码
MemoryStream stm = new MemoryStream(data); 位图 f_Bitmap = (Bitmap)Image.FromStream(stm);
请提供如何将 HTML 文件转换为位图图像的解决方案。
谢谢。
您始终可以使用 WebBrowser 对象(在此处阅读更多内容)。
public void WBCapture()
{
WebBrowser wb = new WebBrowser();
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
wb.ScrollBarsEnabled = true;
wb.Width = 800;
wb.Height = 600;
wb.DocumentText = @"<b>Hello</b> <i>World</i>!!!";
// Or you can navigate to:
// wb.Navigate("http://mydocmentsurl.com");
}
void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser wb = (WebBrowser)sender;
using (Graphics graphics = wb.CreateGraphics())
using (Bitmap bitmap = new Bitmap(wb.Width, wb.Height, graphics))
{
Rectangle bounds = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
wb.DrawToBitmap(bitmap, bounds);
bitmap.Save(@"C:\caputre.png", ImageFormat.Png);
}
}
如果要将 HTML 文件的内容保存为位图,则不能只将字节放入位图对象中。您需要使用 WebBrowser 对象并手动绘制它。这是一篇概述它的文章。
我的解释是关于您收到的错误:
它引发错误的原因是您所做的只是将 HTML 文本从文件推送到流中,当 FromStream 使用数据时,它说数据的格式不是位图或不够好
只要您所说的 HTML 文件是指向图像文件的直接链接,这将起作用:
var request = (HttpWebRequest) WebRequest.Create(IMAGE_URL);
using (var stream = request.GetResponse().GetResponseStream())
{
using (var image = Image.FromStream(stream))
{
var bitmap = new Bitmap(image);
//use or return bitmap, image will automatically get disposed
}
}
将 IMAGE_URL 替换为您的网址。
如果 HTML 文件包含文本形式的 URL,那么您需要将其解析出来。
如果此文件是本地文件,您可以简单地使用 FileStream(或 FileReader)来获取本地文件的流(这类似于 WebRequest 上的 GetResponseStream。)
如果您有任何问题,请告诉我。
希望能帮助到你。