检测损坏的图像文件
Detect a corrupt image file
大家好,你们这些聪明人,
我在这里面临着一些挑战。
我应该创建几个不同的 PDF,其中包含多个(不相似的)图像。
不幸的是,有些图像是 corrupt/defect。这导致将特定 PDF 创建为 fail/dump.
Is there a way I can test the image prior to creation of the PDF?
请对我温柔一点。我不是专家。
我发现 System.Drawings.Image 可以测试一些格式。我猜总比没有好(它会显着减少子集)。
但是在使用 iTextSharp.text.Image 创建 PDF 时。然后我不知道如何使用 the System.Drawings.Image
因为当我尝试 Image newImage = Image.FromFile("SampImag.jpg");
然后它(图像)指的是 iTextSharp.text.Image
class.
System.Drawings.Image 是抽象的,所以我尝试创建一个子class。
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);
{
}
}
但这行不通。
如果您需要与调查此事相关的信息,请通知我。
提前致谢。
捕获 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
文件中删除了几个字符,控制台显示:
Error loading image...
并将其转换为 iTextSharp.text.Image
你应该可以使用
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;
}
}
大家好,你们这些聪明人,
我在这里面临着一些挑战。 我应该创建几个不同的 PDF,其中包含多个(不相似的)图像。
不幸的是,有些图像是 corrupt/defect。这导致将特定 PDF 创建为 fail/dump.
Is there a way I can test the image prior to creation of the PDF?
请对我温柔一点。我不是专家。
我发现 System.Drawings.Image 可以测试一些格式。我猜总比没有好(它会显着减少子集)。
但是在使用 iTextSharp.text.Image 创建 PDF 时。然后我不知道如何使用 the System.Drawings.Image
因为当我尝试 Image newImage = Image.FromFile("SampImag.jpg");
然后它(图像)指的是 iTextSharp.text.Image
class.
System.Drawings.Image 是抽象的,所以我尝试创建一个子class。
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);
{
}
}
但这行不通。
如果您需要与调查此事相关的信息,请通知我。
提前致谢。
捕获 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
文件中删除了几个字符,控制台显示:
Error loading image...
并将其转换为 iTextSharp.text.Image
你应该可以使用
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;
}
}