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
我发现有两种方法可以使用默认的 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