asp图片压缩处理时,遇到损坏的图片导致程序报错,如何跳过问题图片继续处理其他图片?

问题是这样的:客户要求网页访问速度再快一点,我只能从图片大小入手,于是写了一段代码将目录下的原图全部压缩成小图【我是用的asp去做的,有用到aspjpeg组件】,并保存新文件夹中,展示时就可以调用缩略图,而问题就发生在将以前的大量图片进行代码压缩的时候。因为元图片文件本身有所损坏,就导致我的程序跑不下去了。

bigFolder是我元始图片的路径
smallFolder是我压缩图片的路径

代码如下(再此代码外部还有一层用来遍历文件夹以及图片文件的for each file in files的代码,这里就不贴了):
Set Jpeg = Server.CreateObject("Persits.Jpeg")
With Jpeg
Jpeg.Open Server.MapPath(bigFolder) →报错就在这里

    if Jpeg.OriginalWidth/Jpeg.OriginalHeight>1 then
    Jpeg.Width=100
    Jpeg.Height=int((100/Jpeg.OriginalWidth)*Jpeg.OriginalHeight)
    elseif Jpeg.OriginalWidth/Jpeg.OriginalHeight<1 then
    Jpeg.Width=100
    Jpeg.Height=int((100/Jpeg.OriginalWidth)*Jpeg.Height)
    end if
    
    Jpeg.Sharpen 1, 130 '//设定锐化效果
    Jpeg.Quality= 100'图片压缩质量最佳为100,想压的小点就设80或是70或再小
    Jpeg.Save Server.MapPath(smallFolder)'保存路径
    End With

Set Jpeg = Nothing

前端报错的内容如下:
Persits.Jpeg.1 错误 '80040035'

Not a JPEG file: starts with 0x7b 0x22

/wab/1.asp

文件夹中的图片是这样的:

img

img

本来是想通过拿到图片大小来判断跳过这类无效图片,或者通过宽高,或者通过返回的Err.Number<>0来判断,但是发现不对图片进行Open的时候是无法取得这些相关信息的,而报错恰恰就出现在Open那一行,一下就陷入循环无解了。

我想要实现的就是当遍历文件夹中的图片,进行压缩处理的时候,如果这个图片有问题(图片无法访问,无法打开,或者大小小于70字节的【大多数有问题的图片都是65、62、64字节左右】),那么就直接跳过当前循环,进入下一张图片的压缩处理。

有没有人能帮我解决一下这个问题呢?

捕获异常自己处理continue?

asp 里 ,
on error resume next
忽略错

在第一行加入这个
在12行再加入
On Error Goto 0
使用On Error Goto 0 语句,让系统重新接管错误的处理
你的代码前后加入以上内容