Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Image.FromFile为什么读入位图比jpeg文件快_C#_.net_Image_Bitmap_Jpeg - Fatal编程技术网

C# Image.FromFile为什么读入位图比jpeg文件快

C# Image.FromFile为什么读入位图比jpeg文件快,c#,.net,image,bitmap,jpeg,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毫秒。(更快) image1.jpg(~545 KB)-所用时

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

using (Image img = Image.FromFile("image file path")) { }
我放了一个秒表只是为了跟踪所用的时间,它告诉我位图的拍摄速度比jpeg图像快??

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

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

我搜索了msdn和web,但找不到与文件格式相关的性能详细信息。

谢谢。

可能的解释:

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

JPG-用于紧密压缩的照片文件的扩展名。这意味着它需要解压JPG文件,然后显示它,从而导致你的时差。这可能要追溯到微软使用位图的时候。我的理解是,整个GDI/System.Drawing名称空间非常庞大,缺乏优化。此外,在需要解码jpeg并将其转换为位图类的位置读取位图不需要处理开销。