Python 3.x 如何使用PIL检查.webp文件是gif还是python中的图像?

Python 3.x 如何使用PIL检查.webp文件是gif还是python中的图像?,python-3.x,image,png,webp,Python 3.x,Image,Png,Webp,我试图制作一个“.webp提取器脚本”在python中,我循环搜索一个预先确定的文件目录,搜索.webp,然后确定它们是否是保存为.webp的.gif文件类型,这样我就可以将.webp保存为.gif文件,或者如果它不是.gif文件,则将其保存为.webp文件,这样我就可以将.webp文件类型保存为.jpg/.png文件 然而,检测.webp是否存储gif或图像有点混乱,在检查之前,我的代码如下: 导入操作系统 从PIL导入图像 对于os.scandir(目录)中的条目: 搜索+=1 如果entr

我试图制作一个“.webp提取器脚本”在python中,我循环搜索一个预先确定的文件目录,搜索.webp,然后确定它们是否是保存为.webp的.gif文件类型,这样我就可以将.webp保存为.gif文件,或者如果它不是.gif文件,则将其保存为.webp文件,这样我就可以将.webp文件类型保存为.jpg/.png文件

然而,检测.webp是否存储gif或图像有点混乱,在检查之前,我的代码如下:

导入操作系统
从PIL导入图像
对于os.scandir(目录)中的条目:
搜索+=1
如果entry.path.endswith(“.webp”)和entry.is_文件()
打印(“--------------”)
打印(“找到一个:.webp”)
打印(entry.path)
isagf=False
MediaFile=Image.open(entry.path)

然后我被困在那里,不得不设法找到一些解决办法。但我必须改变我的思维方式,从逻辑上思考。我认为.gif有多个图像帧,而像.png这样的图像只有一个。因此,如果我能够阅读.webp文件并找到答案,我就可以区分图像和.gif…

最终,我找到了如何读取图像/gif中的帧,这是:

导入操作系统
从PIL导入图像,图像序列
MediaFile=Image.open(entry.path)
对于ImageSequence.Iterator(MediaFile)中的帧:
#剩下的代码在这里
因此,要确定.webp是.gif还是图像,我只需要读取有多少帧。如果有一个帧,.webp是一个图像,否则如果它是多个帧,则是一个.gif,因为它正在两个帧之间转换。因此,我提出了一个函数:

从PIL导入图像,图像序列
def ISAGF(文件路径):
尝试:
MediaFile=Image.open(文件路径)
索引=0
对于ImageSequence.Iterator(MediaFile)中的帧:
指数+=1
如果索引>1:#必须表示.webp是gif,因为它有多个帧
返回真值
else:#必须表示.webp有一个帧,使其成为图像
返回错误
除了:#如果无法打开.webp,则它很可能不是.gif或.webp
返回错误