为什么某些 Tiff 文件无法加载 TiffLib.NET
Why won't some Tiff files load with TiffLib.NET
我在用 C# 加载 Tiff 文件时遇到问题。我下载了一些示例 tiff 文件并能够正常加载它们,但是当我尝试加载从 PCI Geomatica 或 ArcGIS 生成的任何 tiff 文件时,ReadRGBAImage 调用失败(returns false)。除了 IMAGEWIDTH 和 IMAGELENGTH,我尝试检索的所有其他标签都返回了 null(例如 XRESOLUTION)。有谁知道为什么会这样?相关代码如下:
using (Tiff tif = Tiff.Open(fileName, "r"))
{
// Find the width and height of the image
FieldValue[] value = tif.GetField(TiffTag.IMAGEWIDTH);
int width = value[0].ToInt();
value = tif.GetField(TiffTag.IMAGELENGTH);
int height = value[0].ToInt();
// Read the image into the memory buffer
int[] raster = new int[height * width];
if (!tif.ReadRGBAImage(width, height, raster))
{
System.Windows.Forms.MessageBox.Show("Could not read image");
return null;
}
}
谢谢!
没有重现问题的文件,我可以 100% 确定,但看起来你的文件无法在 LibTiff.Net 的帮助下转换为 RGBA 光栅。
这不是错误,只是您使用了一些不太流行的 TIFF 风格。有人说 TIFF 是一千种不兼容的文件格式。这句话肯定有一定道理。
图书馆可以读取(并解码!)您的文件。您可以使用 ReadEncodedStrip 和/或 ReadScanline 方法获取解码栅格。将光栅转换为 RGBA 的任务留给了您。
并且不要忘记,并非每张图像都可以在不丢失某些图像数据的情况下转换为 RGBA。
我在用 C# 加载 Tiff 文件时遇到问题。我下载了一些示例 tiff 文件并能够正常加载它们,但是当我尝试加载从 PCI Geomatica 或 ArcGIS 生成的任何 tiff 文件时,ReadRGBAImage 调用失败(returns false)。除了 IMAGEWIDTH 和 IMAGELENGTH,我尝试检索的所有其他标签都返回了 null(例如 XRESOLUTION)。有谁知道为什么会这样?相关代码如下:
using (Tiff tif = Tiff.Open(fileName, "r"))
{
// Find the width and height of the image
FieldValue[] value = tif.GetField(TiffTag.IMAGEWIDTH);
int width = value[0].ToInt();
value = tif.GetField(TiffTag.IMAGELENGTH);
int height = value[0].ToInt();
// Read the image into the memory buffer
int[] raster = new int[height * width];
if (!tif.ReadRGBAImage(width, height, raster))
{
System.Windows.Forms.MessageBox.Show("Could not read image");
return null;
}
}
谢谢!
没有重现问题的文件,我可以 100% 确定,但看起来你的文件无法在 LibTiff.Net 的帮助下转换为 RGBA 光栅。
这不是错误,只是您使用了一些不太流行的 TIFF 风格。有人说 TIFF 是一千种不兼容的文件格式。这句话肯定有一定道理。
图书馆可以读取(并解码!)您的文件。您可以使用 ReadEncodedStrip 和/或 ReadScanline 方法获取解码栅格。将光栅转换为 RGBA 的任务留给了您。
并且不要忘记,并非每张图像都可以在不丢失某些图像数据的情况下转换为 RGBA。