c#中图像位图和fromFile方法的区别

difference between image bitmap and fromFile methods in c#

我发现有两种方法可以使用默认的 c# 库读取图像信息。其中之一是

 System.Drawing.Image image = new Bitmap("file..path");

另一个是:

Image image = Image.FromFile("file..path");

如果我需要读取大量图像(将近 100TB 数据),谁能告诉我哪个 运行 更快。

I found out that there are two ways to read the image info

你知道,如果它只是你想要的图像信息,那么我不会使用任何一个函数,因为两者都将 整个图像从磁盘加载到内存 - 相当浪费电脑资源的使用。

相反,您应该只加载图像文件 header,无论它是 EXIF; BITMAPINFOHEADER 或其他取决于图像格式。有多种方法可以通过 .NET 加载此类信息(请参阅下面的链接)。

图片headers

除了 RAW 图像文件格式(不一定是从 SLR 相机输出的文件格式)之外,大多数图像文件格式都有一个 header 可以在将图像光栅数据从磁盘加载到内存之前加载。事实上,通常要求首先读取 header,否则您将不知道在加载图像之前要分配多少内存。

  • 它有多宽?
  • 多高?
  • 每个像素有多少位(颜色深度)?

...等等。这些都是通过先阅读图像文件header来回答的。顾名思义,有关图像的信息通常位于文件开头附近。确切的格式和布局取决于所讨论的文件格式。参见 BMP; PNG 资源以获取更多信息。

这里有一些加载图片的建议headers