Python Image.seek不';返回图像对象
我正在尝试制作一个程序,从URL获取图像。如果图像已设置动画,则返回gif的第一帧,如果未设置动画,则仅返回图像 代码:Python Image.seek不';返回图像对象,python,python-3.x,python-imaging-library,Python,Python 3.x,Python Imaging Library,我正在尝试制作一个程序,从URL获取图像。如果图像已设置动画,则返回gif的第一帧,如果未设置动画,则仅返回图像 代码: def is_animated(im): try: im.seek(1) return True except EOFError: return False def getImg(url): img = Image.open(requests.get(url, stream=True).raw, mod
def is_animated(im):
try:
im.seek(1)
return True
except EOFError:
return False
def getImg(url):
img = Image.open(requests.get(url, stream=True).raw, mode='r')
if is_animated(img):
return img
else:
print('no animation detected')
return img
问题:我用一张动画图片尝试了它:它在
is_animated()
中返回True,但在返回img
中不返回图像对象。错误日志为空。这里有什么问题?我将感谢您的帮助,提前谢谢。seek
不会返回枕头中的任何内容。它只是寻找下一帧,并将img
对象指向该帧,因此如果输出img
,它将显示下一帧
此外,这意味着通过在中运行im.seek(1)
,您将自动搜索到下一帧,这意味着您永远不会从getImg
函数返回序列中的第一个图像。您必须运行im.seek(0)
才能返回第一帧
来源:(注意在seek
或\u seek
中没有返回任何内容)好的,谢谢你的提示。但是它仍然不输出图像object@JoshJohnson现在还不清楚你所说的是什么意思,它仍然不输出图像对象。您是如何尝试输出它的?您现在正在执行返回img
,这似乎是正确的,但现在还不清楚您是如何输出它的,因为您还没有包含相关的代码。我已经更新了代码,我尝试使用非动画图片运行它,效果非常好。@JoshJohnson您的更新没有真正的帮助,因为它不是我要求的,这就是您试图输出图像的方式。另外,您仍在通过is\u animated
搜索图像,因此您总是会返回第二帧,除非您在运行im.seek(1)
后运行im.seek(0)
。@JoshJohnson您还尝试过其他动画图像吗?您是否尝试过将一个文件保存到磁盘,然后直接加载,以查看是否有任何变化?你有没有看过网上有人用seek
输出动画图像的例子?getImg
的返回值是多少?@HåkenLid images那么就没有问题了?@HåkenLid图片稳定时就是图像,但是,当图像设置动画时,这算不了什么。打开图像文件时,应该使用seek
方法。但您使用的是流式http请求。如果不想下载整个图像文件以确定其是否已设置动画,可以查看此问题。