读取 tiff 文件的尺寸和分辨率而不先加载它

2024-01-12

如何使用如下代码读取 tiff 文件的尺寸(宽度和高度)和分辨率(水平和垂直),而无需先将其加载到内存中。对于大文件来说太慢了,而且我不需要操作它们。

Image tif = Image.FromFile(@"C:\large_size.tif");
float width = tif.PhysicalDimension.Width;
float height = tif.PhysicalDimension.Height;
float hresolution = tif.HorizontalResolution;
float vresolution = tif.VerticalResolution;
tif.Dispose();

Edit:

这些 tiff 文件是双层的,尺寸为 30x42 英寸。文件大小约为1~2 MB。所以上面的方法工作正常但速度慢。


我自己遇到了这个问题并找到了解决方案(可能在这里)。Image.FromStream with validateImageData = false允许您访问您正在查找的信息,而无需加载整个文件。

using(FileStream stream = new FileStream(@"C:\large_size.tif", FileMode.Open, FileAccess.Read))
{
  using(Image tif = Image.FromStream(stream, false, false))
  {
    float width = tif.PhysicalDimension.Width;
    float height = tif.PhysicalDimension.Height;
    float hresolution = tif.HorizontalResolution;
    float vresolution = tif.VerticalResolution;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取 tiff 文件的尺寸和分辨率而不先加载它 的相关文章

随机推荐