检测损坏的图像文件

时间:2016-06-29 08:44:26

标签: c# itext abstract-class system.drawing.imaging

大家好聪明,

我在这里遇到了一些挑战。 我应该创建几个不同的PDF包含多个(不相似)的图像。

不幸的是,有些图像已损坏/缺陷。这会导致创建partikular PDF失败/转储。

  

有没有办法在创建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 个答案:

答案 0 :(得分: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;
    } 
}

答案 1 :(得分:1)

Catch OutOfMemoryException有效:

<script>
$(index.php).ready(function(){
    ``$("#contract").click(function(){
            $("<div class="contracts">").toggle();
        });
});
</script>

我用这段代码测试了它:

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..."); } 文件中的几个字符,控制台说:

  

加载图片时出错......

并将其转换为iTextSharp.text.Image