当我将图像放到MemoryStream时,它在RAM中的大小与图像的大小相同吗?
例如,如果图像是4MB,那么MemoryStream的大小是4MB吗?
答案 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
}