Pygame:image.load的一个版本适用于我的图像,但另一个版本不适用。我一定错过了很明显的事情

时间:2013-02-02 01:15:26

标签: pygame

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)

尽我所知,这些功能应该完全相同。或者我读错了文档?

1 个答案:

答案 0 :(得分:0)

如果您正在从类似文件的对象中读取图像,则必须确保文件的当前位置位于开始位置,即偏移0处的a.k.a.

例如:

f = open(filename)
content = f.read()
pygame.image.load(f, filename)

不起作用,因为当您调用image.load时,文件对象指向文件的末尾。

您可以使用seek将文件的当前位置设置为开头,因此

f = open(filename)
content = f.read()
f.seek(0)
pygame.image.load(f, filename)

按预期工作。