我想将一个JPS文件加载到pygame中。 JPS文件只是一个jpeg文件,图像由两个并排的立体图片组成。如果我将扩展名更改为jpg并使用pygame.image.load(file_name),Pigame将加载它,我想要做的是将文件加载到内存中,然后告诉Pigame从缓冲区加载文件,然后缓冲区包含一个jpeg文件。
我想这样做,因为后来我想扩展一些东西,以便我可以加载一个MPO文件,这是一个包含两个jpeg文件的文件,我怀疑将涉及相同的技术。
我已经尝试过pygame.image.frombuffer和pygame.image.fromstring,但是得到的错误信息是"字符串长度不等于格式和分辨率大小"。我想这是因为我没有告诉它缓冲区包含一个jpeg。
任何人都知道如何做到这一点?
答案 0 :(得分:1)
也许是这些方面的事情(未经测试):
with open('image.jps', 'rb') as imgfile:
imgbuf = StringIO(imgfile.read())
image1 = pygame.image.load(imgbuf)
既然你说它有效,你可能会缩短如下所示的内容,因为没有理由给图像缓冲区命名并保留它:
with open('image.jps', 'rb') as imgfile:
image1 = pygame.image.load(StringIO(imgfile.read()))