Попытка создать GDI + Bitmap из файла. Если создание объекта 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
, но я бы поэкспериментировать с этим, прежде чем сделать выключатель.
EDIT
Если у вас есть 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;
}
}
Какие форматы изображений вам нужны для поддержки? Если его просто базовый 4 (bmp/png/gif/jpg), вы можете использовать класс растрового изображения и просто пытаться их загрузить. – Will
Возможный дубликат [Как проверить изображение JPEG на C#/.Net не повреждено] (http://stackoverflow.com/questions/1173349/how-do-i-validate-a-jpeg-image-in- c-sharp-net-is-not-corrupted) – V4Vendetta
Я отредактировал вопрос. –