Обнаружить поврежденный файл изображения

Привет всем, вы, умные ребята,

Я сталкиваюсь с небольшой проблемой здесь. Я должен создать несколько разных 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

Другие вопросы по тегам