读取图像并确定其损坏的C#
如何确定我作为原始字节的图像是否已损坏。 是否有任何开源库可以在C#中处理多种格式的此问题?
谢谢
尝试从文件中创建GDI +位图。 如果创建Bitmap对象失败,那么您可以假设图像已损坏。 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; } }
您可以查看这些链接以获取主意。 第一个在这里; validation图像
第二个就在这里; 如何检查损坏的TIFF图像
抱歉,我不知道任何外部库。