Pygame:一个版本的image.load适用于我的图像,但另一个版本不能.我一定错过了一些明显的东西



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)

按预期工作。

相关内容

最新更新