Обнаружить поврежденный файл изображения
Привет всем, вы, умные ребята,
Я сталкиваюсь с небольшой проблемой здесь. Я должен создать несколько разных PDF-файлов, содержащих несколько (не похожих) изображений.
К сожалению, некоторые изображения повреждены / дефектны. Это приводит к сбою создания partikular PDF /dump.
Есть ли способ проверить изображение перед созданием PDF?
Пожалуйста, будь осторожен со мной. Я не эксперт.
Я обнаружил, что System.Drawings.Image может тестировать некоторые форматы. Я думаю, лучше, чем ничего (это значительно уменьшит подмножество).
Но при использовании iTextSharp.text.Image для создания PDF-файлов. Тогда я не знаю, как использовать the System.Drawings.Image
потому что когда я пытаюсь Image newImage = Image.FromFile("SampImag.jpg");
тогда это (изображение) относится к iTextSharp.text.Image
учебный класс.
System.Drawings.Image является абстрактным, поэтому я попытался создать подкласс.
public class ImageTest : System.Drawing.Image
{
}
Теперь я получаю сообщение об ошибке:"Error 1 The type 'System.Drawing.Image' has no constructors defined"
Попытка выяснить, какие конструкторы я могу использовать, дает мне эту попытку.
public class ImageTest : System.Drawing.Image
{
ImageTest(string filename);
{
}
}
Но это не работает.
Пожалуйста, сообщите мне, если вам нужна информация, которая имеет отношение к вам для расследования этого вопроса.
Заранее спасибо.
2 ответа
Вы должны просто быть в состоянии использовать
public bool IsValidImageFile (string imageFile)
{
try
{
// the using is important to avoid stressing the garbage collector
using (var test = System.Drawing.Image.FromFile(imageFile))
{
// image has loaded and so is fine
return true;
}
}
catch
{
// technically some exceptions may not indicate a corrupt image, but this is unlikely to be an issue
return false;
}
}
Catch OutOfMemoryException работает:
try
{
// Using System.Drawing.Image
System.Drawing.Image img = (System.Drawing.Bitmap)System.Drawing.Image.FromFile("myimage.png");
}
catch (OutOfMemoryException ex)
{
// Handle the exception...
}
Я проверил это с этим кодом:
try
{
System.Drawing.Image img = (System.Drawing.Bitmap)System.Drawing.Image.FromFile("myimage.png");
}
catch (OutOfMemoryException ex)
{
Console.WriteLine("Error loading image...");
}
И я удалил несколько символов в .png
файл, и консоль сказала:
Ошибка при загрузке изображения...
И преобразовать его в iTextSharp.text.Image