读取图像并确定其C#是否已损坏

本文关键字:是否 已损坏 图像 读取 | 更新日期: 2023-09-27 18:20:22

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

感谢

读取图像并确定其C#是否已损坏

尝试从文件创建GDI+位图。如果创建位图对象失败,则可能会认为图像已损坏。GDI+支持多种文件格式: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;
    }
}

您可以查看这些链接以了解想法。第一个在这里;验证图像

第二个在这里;如何检查损坏的TIFF图像

对不起,我不知道有什么外部图书馆可以提供这个。