在c中使用libtiff读取tiff文件:阻止警告打印输出
当读取tiff文件时,每当函数TIFFReadDirectory()读取未知标记时,我都会向控制台发出警告消息 . 用户Borovsky提供的答案我明白为了防止这种情况,我需要:
“首先创建继承自TiffErrorHandler的类,并重载WarningHandler和WarningHandlerEx方法 . 基本上,你不能在这些方法中做任何事情 . 然后使用SetErrorHandler方法将您的类的实例设置为库的错误处理程序 . 该方法是静态的,您可以在打开图像之前设置错误处理程序 . “问题是我是C的初学者,虽然我理解如何实现上述,但我似乎无法找到这个TiffErrorHandler类 . 我的代码如下:
class myTiffErrorHandler : public TIFFErrorHandler { <- THE CLASS CANNOT BE FOUND
public:
void WarningHandler() { }
void WarningHandlerEx() { }
};
然后我在main()中所做的就是:
Main() {
tif = TIFFOpen(“fn.tif”, "r"));
int numOfFrames=0;
do {
numOfFrames++;
} while (TIFFReadDirectory(tif));
}
有人可以帮我解决这个问题吗?我做错了什么,这个类在哪里被定义?
谢谢
1 回答
您所指的答案是libtiff在面向对象的包装器中使用C#,这与使用C的情况不同 . 你需要做的是定义一个虚拟警告/错误处理程序,如下所示:
然后使用函数
TIFFSetWarningHandler
替换默认处理程序,如下所示:请注意,您也可以使用
NULL
参数调用TIFFSetWarningHandler
,但我喜欢在Release版本中使用#ifdef
编辑的处理程序,这样我仍然可以在Debug版本中看到警告 .