相同大小的位图产生字节数组

时间:2013-05-29 08:48:21

标签: c#

当从WebBrowser的DrawToBitmap()函数生成位图时,在使用两个相同大小的图像时,为什么在某些情况下,将位图转换为字节数组时,是否有不同大小的数组? 我使用的功能:

public static byte[] ImageToByte(Image img)
{
    ImageConverter converter = new ImageConverter();
    return (byte[])converter.ConvertTo(img, typeof(byte[]));
}

从这里开始,我使用的图像存在问题。它们不同,我使用http://www.google.comhttp://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

3 个答案:

答案 0 :(得分:3)

这取决于用于保存图像的编解码器。例如,如果它是PNG或JPG,则压缩可能会为相同大小的图像生成不同大小的输出。这是因为大的均匀区域比具有大量细节的区域更有效地压缩。

答案 1 :(得分:2)

由于名为Stride的内容,请看一下这篇文章:Image Stride

enter image description here

  

包含具有相同尺寸的视频帧的两个缓冲区可以具有   两个不同的步伐。如果您处理视频图像,则必须使用   大步考虑。

答案 2 :(得分:0)

所以结果是DrawToBitmap not supported