对于没有陷印异常的双色TIFF图像的.NET测试?

我正在开发处理TIFF图像的文档数据库应用程序。 当对图像进行注释时,为了让用户界面仅以黑色和白色作为双色(Format1bppIndexed)图像的选项,而对于颜色深度较高的图像则选择多种颜色,我需要测试TIFF是否是双色调。 这是我的功能:

private bool IsBitonal(string filePath)
{
    bool isBitonal = false;
    try
    {
        Bitmap bitmap = new Bitmap(sourceFilePath);
        Graphics graphics = Graphics.FromImage(bitmap);
    }
    catch (Exception ex)
    {
        isBitonal = true;
    }
    return isBitonal;
}

它有效,但不是优雅。 所引发的索引像素格式异常在此处描述:http://msdn.microsoft.com/zh-cn/library/system.drawing.graphics.fromimage.aspx。

捕获正常程序流的异常是很差的做法。 而且,可以想象的是,可以抛出不同的例外。 有没有更好的方法来实现不依赖陷阱异常的IsBitonal函数?

我试图在网上搜索信息,并且找到了如何加载TIFF图像并通过转换为其他格式避免异常的例子,但是我找不到任何关于TIFF图像是否是双色调的简单测试的例子。

谢谢。


你能检查你的位图的PixelFormat属性吗?

private bool IsBitonal(string sourceFilePath)
{
    Bitmap bitmap = new Bitmap(sourceFilePath);
    return (bitmap.PixelFormat == PixelFormat.Format1bppIndexed)   
}

如果这不起作用,您应该能够查看Bitmap类中的PropertyItems集合,并直接从图像中读取TIFF标签。

请参阅此处的TIFF规范:http://www.awaresystems.be/imaging/tiff/tifftags/baseline.html

您还可以查看图像的尺寸和分辨率,并将其与文件大小进行对比,以了解每个像素有多少位。 (考虑到图像中的压缩和元数据,这可能不会很精确)。

链接地址: http://www.djcxy.com/p/50291.html

上一篇: .NET test for bitonal TIFF image without trapping exception?

下一篇: Image resize with GDI in .NET gives low saturation