gpt4 book ai didi

c# - WebBrowser.DrawToBitmap 留下白色像素

转载 作者:行者123 更新时间:2023-12-02 05:33:58 33 4
gpt4 key购买 nike

我使用 Gecko .NET WebBrowser 控件来获取 HTML 页面。

然后我使用这段代码制作这个 HTML 页面的屏幕截图:

void LoadingFinished(object sender, EventArgs args)
{
try
{
myBrowser.Document.Body.SetAttribute("style", "overflow:hidden");
if (screenshotkey != "")
{
Bitmap bitmap = new Bitmap(myBrowser.Width, myBrowser.Height);
myBrowser.DrawToBitmap(bitmap, new Rectangle(0, 0, myBrowser.Width, myBrowser.Height));
bitmap.Save("Screenshots/" + screenshotkey + ".png", ImageFormat.Png);
}
}
catch (Exception dfkvsn)
{
errorloadingpage();
}
}

我从上面的代码中删除了一些不是很重要的东西 - 比如设置浏览器宽度等。最初代码是 100% 的功能。

问题是当它保存 png 屏幕截图(DrawToBitmap 行)时 - 在某些地方创建的图片具有不应该存在的白色像素(WebBrowser 最初没有它们),请参见 the link .

当我使用标准的 .NET WebBrowser 控件时发生了同样的事情,所以这不是 Gecko 的问题。

我不知道如何处理这个问题。有没有更好的方法将其保存为位图?或者这是 .NET 所能做的最好的事情?

最佳答案

已修复。
事实证明,看似白色的像素只是透明的。
而且它们只出现在图片黑色最深的地方 (RGB 0, 0, 0)
由于某种原因,.NET 无法将此颜色保存到文件中。
所以我简单地添加了一行代码,使整个图片变黑,并在上面记录我的屏幕截图。
因为它现在是 2 层 - 透明像素现在看起来是黑色的 - 正是我想要的 - 没有白色像素。
这是最终代码:

void LoadingFinished(object sender, EventArgs args)
{
try
{
myBrowser.Document.Body.SetAttribute("style", "overflow:hidden");
if (screenshotkey != "")
{
panel1.Height = myBrowser.Document.Body.ScrollHeight;
panel1.Width = myBrowser.Document.Body.ScrollWidth;
this.Size = new System.Drawing.Size(panel1.Width+20, panel1.Height+20);

if (!Directory.Exists("Screenshots"))
{
Directory.CreateDirectory("Screenshots");
}

Bitmap bitmap = new Bitmap(myBrowser.Width, myBrowser.Height);
for (int Xcount = 0; Xcount < bitmap.Width; Xcount++)
{
for (int Ycount = 0; Ycount < bitmap.Height; Ycount++)
{

bitmap.SetPixel(Xcount, Ycount, Color.Black);
}
}
myBrowser.DrawToBitmap(bitmap, new Rectangle(0, 0, myBrowser.Width, myBrowser.Height));
bitmap.Save("Screenshots/" + screenshotkey + ".png", ImageFormat.Png);
}
}
catch (Exception dfkvsn)
{
errorloadingpage();
}
}

关于c# - WebBrowser.DrawToBitmap 留下白色像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11959170/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com