从 WebBrowser 的 DrawToBitmap() 函数生成位图时,同时使用两个大小相同的图像,为什么在某些情况下,将位图转换为字节数组时,会有不同大小的数组?我使用的功能:
public static byte[] ImageToByte(Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));
}
从这里开始,我使用的图像存在问题。它们是不同的,我使用http://www.google.com和http://www.google.co.uk的快照。它们都生成大小为 {Width = 833 Height = 500} 的图像。但是,字节数组的大小分别为 20072 和 24368。
有任何想法吗?
谢谢!
编辑
让我添加更多信息。图像被转换为 BMP。我会附上更多我的 C# 让大家了解更多。
public void captureSnapshot(string url)
{
this.url = url;
var thr = new Thread(() =>
{
browser = new WebBrowser();
browser.DocumentCompleted += snapshotEventCompleted;
browser.Navigate(url);
Application.Run();
});
thr.SetApartmentState(ApartmentState.STA);
thr.Start();
}
public void snapshotEventCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
int pageHeight = browser.Document.Body.ScrollRectangle.Height;
int pageWidth = browser.Document.Body.ScrollRectangle.Width;
snapshot = new Bitmap(pageWidth, pageHeight);
browser.Size = new Size(pageWidth, pageHeight);
browser.ScrollBarsEnabled = false;
browser.DrawToBitmap(snapshot, new Rectangle(browser.Location.X, browser.Location.Y, pageWidth, pageHeight));
}
解决了:
所以事实证明函数 DrawToBitmap 是不支持的。呸呸呸