C# 如何使用LibTiff c禁用控制台上显示的警告消息#
我需要帮助来停止在我的控制台上显示恼人的警告 我使用检测损坏图像的应用程序收到以下警告。应用程序按预期工作,但会显示这些消息 ReadDirectory:警告,C:\find corrupted images\a.TIF:未知字段 使用标记50701(0xc60d)时遇到fillStrip:C:\find corrupted images\b.TIF:scanlin e-1处的读取错误;应为7115字节 10130 ReadDirectory:警告,C:\find corrupted image\C:未知 遇到带有标记33885(0x845d)的字段ReadDirectory:警告, C:\find corrupted images\d:带有标记50701(0xc60d)的未知字段 遇到ReadDirectory:警告,C:\find corrupted image\e: LibJpeg:警告,损坏的JPEG数据:11021个额外字节之前 标记0xD8 LibJpeg:意外错误 OJPEGSetupDecode:警告、贬值和麻烦的旧式JPEG 压缩模式,请转换为新型JPEG压缩和 通知供应商写入软件OJPEGREADERINFOSECSTREAMSOF: ReadDirectory:警告,缺少SamplesPerPixel标记,假设 正确的每像素采样数值为1 tif:遇到标签为50701(0xc60d)的未知字段ReadDirectory: 警告,假设采样正确,则缺少SamplesPerPixel标记 每像素值为1 有没有办法阻止这些消息出现C# 如何使用LibTiff c禁用控制台上显示的警告消息#,c#,libtiff,libtiff.net,C#,Libtiff,Libtiff.net,我需要帮助来停止在我的控制台上显示恼人的警告 我使用检测损坏图像的应用程序收到以下警告。应用程序按预期工作,但会显示这些消息 ReadDirectory:警告,C:\find corrupted images\a.TIF:未知字段 使用标记50701(0xc60d)时遇到fillStrip:C:\find corrupted images\b.TIF:scanlin e-1处的读取错误;应为7115字节 10130 ReadDirectory:警告,C:\find corrupted image
提前感谢如果您不希望控制台中出现警告,您应该向库提供自己的错误处理程序 首先创建继承并重载
WarningHandler
和warninghandlex
方法的类。基本上,用这些方法你什么都做不了
然后将类的一个实例设置为带有方法的库的错误处理程序。该方法是静态的,您可以在打开图像之前设置错误处理程序。您需要使用正确的签名覆盖WarningHandler()和WarningHandlerExt()方法:
public class DisableErrorHandler : TiffErrorHandler
{
public override void WarningHandler(Tiff tif, string method, string format, params object[] args)
{
// do nothing, ie, do not write warnings to console
}
public override void WarningHandlerExt(Tiff tif, object clientData, string method, string format, params object[] args)
{
// do nothing ie, do not write warnings to console
}
}
通过具有正确的方法签名和方法名称,需要override关键字。成功重写方法后,将错误处理程序设置为新方法将正常工作:
Tiff.SetErrorHandler(new DisableErrorHandler());
// now no warnings will be sent to console
using (Tiff tiff = Tiff.Open(fn, "r"))
{ .....
请注意,我们只覆盖了警告处理程序。当然,您也可以重写错误处理程序。参考:
复制这样详细的错误消息?不需要也没有用。感谢您的建议,我创建了一个类似于下面的公共类MyErrorHandler:TiffErrorHandler{public void WarningHandler(){}public void warninghandlex(){}的类,然后我在主函数MyErrorHandler ErrorHand=new MyErrorHandler()中创建了它的一个实例;然后我尝试使用SetErrorHandler,但intellisense似乎找不到该函数我做错了什么吗?提前谢谢@user2469935
SetErrorHandler
是Tiff
类的静态方法。您应该像Tiff.SetErrorHandler(..)
那样编写它。