位图文件大小与字节 [] 大小

bitmap file size vs byte[] size

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)

为什么会有差异以及如何确定字节[]中位图的正确大小 表格?

    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();
        }
    }

Windows7/NTFS

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

2359350*4/3 是 3145800,只比您看到的值略多一点。我预计细微差别是因为磁盘上有一个 header,但它实际上不是图像的一部分。