位图文件大小与byte []大小

时间:2015-01-23 10:16:56

标签: c# bitmap

bmp.ToByteArray(ImageFormat.Bmp).Length 3145782 int 但文件系统显示为2,25 MB (2.359.350 bytes) and Size on disk 2,25 MB (2.363.392 bytes)

为什么存在差异,如何在byte []中确定位图的正确大小 形成的?

    string appPath = Application.StartupPath;

    var bmp = new Bitmap(Image.FromFile(appPath + "\\Images\\Penguins.bmp"));

    public static byte[] ToByteArray(this Image image, ImageFormat format)
    {
        using (MemoryStream ms = new MemoryStream())
        {
            image.Save(ms, format);
            return ms.ToArray();
        }
    }

Windows 7 / NTFS

1 个答案:

答案 0 :(得分:2)

我怀疑那是因为磁盘上的文件不包含alpha通道,但在内存中它确实存在。在磁盘上,每像素3个字节,但在内存中它使用4个。

2359350 * 4/3是3145800,仅略高于您看到的值。我希望稍有不同是因为在磁盘上有一个标题,但这实际上并不是图像的一部分。