读取图像并确定其损坏的C#

时间:2012-01-13 06:12:43

标签: c# image corrupt

如何确定我作为原始字节的图像是否已损坏。是否有任何开源库可以在C#中处理多种格式的这个问题?

由于

2 个答案:

答案 0 :(得分:12)

尝试从文件中创建GDI +位图。如果创建Bitmap对象失败,则可以假设图像已损坏。 GDI +支持多种file formats:BMP,GIF,JPEG,Exif,PNG,TIFF。

像这个功能应该有效:

public bool IsValidGDIPlusImage(string filename)
{
    try
    {
        using (var bmp = new Bitmap(filename))
        {
        }
        return true;
    }
    catch(Exception ex)
    {
        return false;
    }
}

您可以将Exception限制为ArgumentException,但我会在进行切换之前先尝试一下。

修改
如果您有byte[],那么这应该有效:

public bool IsValidGDIPlusImage(byte[] imageData)
{
    try
    {
        using (var ms = new MemoryStream(imageData))
        {
            using (var bmp = new Bitmap(ms))
            {
            }
        }
        return true;
    }
    catch (Exception ex)
    {
        return false;
    }
}

答案 1 :(得分:0)

您可以查看这些链接以了解相关信息。 第一个在这里; Validate Images

第二个就在这里; How to check corrupt TIFF images

抱歉,我不知道任何外部库。