Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.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# 从多tiff获取页面_C#_Tiff_Libtiff.net - Fatal编程技术网

C# 从多tiff获取页面

C# 从多tiff获取页面,c#,tiff,libtiff.net,C#,Tiff,Libtiff.net,NET库检索多tiff中的页面数。我使用的样本来自 我遇到异常:无法写入已关闭的文本编写器。 堆栈跟踪: at System.IO.__Error.WriterClosed() at System.IO.StringWriter.Write(String value) at Microsoft.VisualStudio.TestTools.TestTypes.Unit.ThreadSafeStringWriter.Write(String value) at System.I

NET库检索多tiff中的页面数。我使用的样本来自

我遇到异常:无法写入已关闭的文本编写器。

堆栈跟踪:

at System.IO.__Error.WriterClosed()
   at System.IO.StringWriter.Write(String value)
   at Microsoft.VisualStudio.TestTools.TestTypes.Unit.ThreadSafeStringWriter.Write(String value)
   at System.IO.TextWriter.Write(String format, Object arg0)
   at System.IO.TextWriter.SyncTextWriter.Write(String format, Object arg0)
   at BitMiracle.LibTiff.Classic.TiffErrorHandler.WarningHandler(Tiff tif, String method, String format, Object[] args)
   at BitMiracle.LibTiff.Classic.Tiff.WarningExt(Tiff tif, Object clientData, String method, String format, Object[] args)
   at BitMiracle.LibTiff.Classic.Tiff.ReadDirectory()

代码与示例相同。我找不到此问题的根源。

我猜问题可能与不支持的图像类型或您传递的tiff文件中的错误有关。LibTiff文档讨论了如果您希望响应错误,则添加自定义处理程序。我以前没用过那个图书馆,所以不能肯定发生了什么事。我猜可能在Open中有一个错误,但是如果没有处理程序,它就会吃掉这个错误。然后,当您尝试
ReadDirectory
时,文件已经关闭。这只是一个猜测。我建议您添加一个错误处理程序,看看发生了什么

编辑:

我回头看了一下示例页面。它们实际上给出了两种读取页数的方法。你有没有尝试过更简单的方法,看看是否同样失败?
要计算TIFF图像中的页数,可以使用TIFF.NumberOfDirectories()方法或遍历目录的简单循环。此示例显示了这两种方法。

您应该能够将您的方法转换为:

public short GetNumberOfPages(Tiff image)
{
    return image.NumberOfDirectories()
}
如果您仍然有问题,请尝试另一个您知道有效且有多个页面的图像,以便排除图像问题

public short GetNumberOfPages(Tiff image)
{
    return image.NumberOfDirectories()
}