当从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的快照。它们都生成大小为{宽度= 833高度= 500}的图像。但是,字节数组的大小分别为20072和24368.
有什么想法吗?
谢谢!
修改
让我补充一些信息。图像变成了BMP。我会附上一些我的J#,让大家了解更多。
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函数。 womp
答案 0 :(得分:3)
这取决于用于保存图像的编解码器。例如,如果它是PNG或JPG,则压缩可能会为相同大小的图像生成不同大小的输出。这是因为大的均匀区域比具有大量细节的区域更有效地压缩。
答案 1 :(得分:2)
答案 2 :(得分:0)
所以结果是DrawToBitmap not supported。