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,仅略高于您看到的值.我希望稍有不同是因为在磁盘上有一个标题,但这实际上并不是图像的一部分.