Stream在内存中的大小是否与图像的大小相同?

时间:2014-02-22 22:11:15

标签: c# stream ram memorystream

当我将图像放到MemoryStream时,它在RAM中的大小与图像的大小相同吗?

例如,如果图像是4MB,那么MemoryStream的大小是4MB吗?

1 个答案:

答案 0 :(得分:1)

这取决于您如何将图像放入内存流中。如果您将文件中的所有字节读入字节数组并将其加载到流中,那么大小将是相同的。如果将其加载到位图中,则它将取决于保存到流时使用的ImageFormat。请看以下示例:

using (MemoryStream ms = new MemoryStream(System.IO.File.ReadAllBytes("C:\\temp\\test.jpg")))
{
    Console.WriteLine(ms.Length);   //59922
}

Bitmap b = new Bitmap("C:\\temp\\test.jpg");
using (MemoryStream ms = new MemoryStream())
{
    b.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
    Console.WriteLine(ms.Length);  //6220854
}

using (MemoryStream ms = new MemoryStream())
{
    b.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    Console.WriteLine(ms.Length); //59922
}