读取图像并确定其C#是否已损坏
本文关键字:是否 已损坏 图像 读取 | 更新日期: 2023-09-27 18:20:22
如何确定作为原始字节的图像是否已损坏。有没有任何开源库可以处理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图像
对不起,我不知道有什么外部图书馆可以提供这个。