pygame的大多数示例都使用接受文件名的pygame.image.load()版本。这很酷,但有时它根本不够,所以我正在尝试让接受文件对象和名称提示的版本工作。
所以问题来了。这有效:
def loadSplashImgDirect(filename):
return pygame.image.load(filename))
这将引发"pygame.error:不支持的图像格式"
def loadSplashImgOpen():
aFile = open(filename, 'r')
return pygame.image.load(aFile,filename)
据我所知,这些函数应该做完全相同的事情。还是我看错了文档?
如果要从类似文件的对象读取图像,则必须确保文件的当前位置位于开头,即偏移0
。
例如:
f = open(filename)
content = f.read()
pygame.image.load(f, filename)
不起作用,因为当您调用 image.load
时,File 对象指向文件的末尾。
您可以使用seek
将文件的当前位置设置为开头,因此
f = open(filename)
content = f.read()
f.seek(0)
pygame.image.load(f, filename)
按预期工作。