C# · 12月 23, 2021

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

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

谢谢

解决方法 尝试从文件创建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; }}