c# – 位图文件大小与byte []大小

bmp.ToByteArray(
ImageFormat.Bmp).Length 3145782 int

但文件系统显示为2,25 MB(2.359.350字节)和磁盘上的大小2,25 MB(2.363.392字节)

为什么存在差异,如何在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

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

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

点赞