图片样例.zip (7.4 MB)
@joyoes
你好!. 试试这个
try (RasterImage image = (RasterImage)Image.load("13.jpg"))
{
if (!isContentCorrect(image))
{
System.out.println("Image is corrupted!");
}
else
System.out.println("Image is OK!");
}
private static boolean isContentCorrect(RasterImage image)
{
try
{
image.loadPartialArgb32Pixels(image.getBounds(), new IPartialArgb32PixelLoader()
{
@Override
public void process(Rectangle pixelsRectangle, int[] pixels, Point start, Point end)
{
// do nothing, just to enforce loading the pixels from jpeg
}
});
}
catch (RuntimeException ignore)
{
return false;
}
return true;
}
对不起,我在前面的答案中编写了java代码。 我在下面附上C#代码。
public void TestJpeg()
{
using (RasterImage image = (RasterImage)Image.Load("13.jpg"))
{
if (!IsContentCorrect(image))
{
Console.WriteLine("Image is corrupted!");
}
else
Console.WriteLine("Image is OK!");
}
}
private class EmptyProcessor : IPartialArgb32PixelLoader
{
public void Process(Rectangle pixelsRectangle, int[] pixels, Point start, Point end)
{
// do nothing, just to enforce loading the pixels from jpeg
}
}
private static bool IsContentCorrect(RasterImage image)
{
try
{
image.LoadPartialArgb32Pixels(image.Bounds, new EmptyProcessor());
}
catch
{
return false;
}
return true;
}
这看起来像是与下载损坏的文件文件相关的错误。 您可以发送发生此类错误的文件吗?
我没有下载图片文件,我是在本地测试的读取图片信息过程中,发生的异常!
您发送的文件已损坏,无法打开。 里面Aspose。映像发生NullReferenceException。 但这条消息被我发给你的代码截获了。 但Visual Studio开发环境仍然在调试模式下显示此异常。 但在程序的正常执行模式下,不会发生这种异常。 如果在"异常通知"窗口中删除交叉,也可以在开发环境中关闭拦截异常的通知