大家好聪明,
我在这里遇到了一些挑战。 我应该创建几个不同的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);
{
}
}
但这不起作用。
如果您需要与调查此事有关的信息,请通知我。
提前致谢。
答案 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