【发布时间】:2012-01-13 06:12:43
【问题描述】:
如何确定作为原始字节的图像是否已损坏。是否有任何开源库可以为 C# 中的多种格式处理此问题?
谢谢
【问题讨论】:
-
您需要支持哪些图像格式?如果它只是基本的 4 (bmp/png/gif/jpg),您可以使用位图类并尝试加载它们。
-
Bitmap 类可以占用字节。您是要检查它是不是图像,还是要检查它是图像还是有效图像?
如何确定作为原始字节的图像是否已损坏。是否有任何开源库可以为 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;
}
}
【讨论】:
【讨论】: