Image.FromFile为什么在位图中读取比jpeg文件更快

时间:2014-03-28 02:18:11

标签: c# .net image bitmap jpeg

我正在使用.net framework 4.0,System.Drawing.Image.FromFile来读取位图和jpeg格式的图像。

using (Image img = Image.FromFile("image file path")) { }

我只是用一个秒表来跟踪拍摄的时间,它显示了位图中的结果比jpeg图像快得多吗?

相同的图像,但格式和大小不同。示例结果如下:
image1.bmp(~4938 KB) - 时间 ~5 ms。(更快)
image1.jpg(~545 KB) - 时间 ~54 ms。(慢)

我的问题是:
1.位图(大尺寸)中读取的方法是否可能比jpeg(小尺寸)更快?为什么呢?
2.有人可以帮助解释“Image.FromFile()”方法中针对不同文件格式发生的逻辑吗?

我搜索msdn和web,但找不到与文件格式相关的性能详细信息 http://msdn.microsoft.com/en-us/library/4sahykhd%28v=vs.100%29.aspx

感谢。

1 个答案:

答案 0 :(得分:4)

可能的解释:

  • 磁盘IO没有区别,因为您实际上正在从缓存中读取文件 - 所以文件大小并不重要。
  • jpg是压缩格式,因此需要将其解压缩以表示为可编辑图像。 BMP本质上是内存和磁盘格式之间的一对一映射 - 加载时不需要进行大量处理。