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

c0_*_*_0n 2 .net c# jpeg image bitmap

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

using (Image img = Image.FromFile("image file path")) { }
Run Code Online (Sandbox Code Playgroud)

我放了一个秒表只是为了跟踪所用的时间,它告诉我位图的结果比 jpeg 图像快??

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

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

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

谢谢。

Ale*_*kov 5

可能的解释:

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