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
答案 0 :(得分:2)
我怀疑那是因为磁盘上的文件不包含alpha通道,但在内存中它确实存在。在磁盘上,每像素3个字节,但在内存中它使用4个。
2359350 * 4/3是3145800,仅略高于您看到的值。我希望稍有不同是因为在磁盘上有一个标题,但这实际上并不是图像的一部分。