We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

有没有什么好办法把这种有问题的图片检测出来啊?

JPG.zip (415.6 KB)
有两张图片是有问题的,但是不知道怎么能把它们都检测出来确实是有问题的照片呢!我用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;

}

@@joyous 你好。 我已经测试了提供的图像。 从jpeg格式的角度来看,它们没有错误,因此此代码无法帮助您。 因为它有助于识别仅保存有错误的 jpeg。

有没有其他好的办法来帮助我解决这个问题啊?

@joyoes 不幸的是,沒有其他方法可以檢查圖像的不正確性,如果保存正常,則只能由人工進行手動視覺比較或準備參考的損壞圖像,您可以將其與加載圖像進行比較。 舉些例子:

using(RasterImage image = (RasterImage)Image.Load("your_image.jpg"))
{
     using(RasterImage refImage= (RasterImage)Image.Load("your_reference.jpg"))
     {
            int[] pixels = image.LoadArgb32Pixels(image.Bounds);
            int[] refpixels = refImage.LoadArgb32Pixels(refImage.Bounds);
            // 你可以比較這些 int[] 數組的長度,而不是內容,並指出它們是不同的還是相同的
     }
}