使用不正确的文件扩展名将图像读入 pygame

Reading an image into pygame with incorrect file extension

我想将 JPS 文件加载到 pygame。 JPS 文件只是一个 jpeg 文件,其图像由两张并排的立体图片组成。虽然如果我将扩展名更改为 jpg 并使用 pygame.image.load(file_name),Pigame 将加载它,但我想做的是将文件加载到内存中,然后告诉 Pigame 从中加载文件一个缓冲区,并且缓冲区包含一个 jpeg 文件。

我想这样做,因为稍后我想扩展一些东西,以便我可以加载一个 MPO 文件,该文件是一个包含两个 jpeg 文件的文件,我怀疑会涉及相同的技术。

我已经尝试了 pygame.image.frombuffer 和 pygame.image.fromstring,但收到 "String length does not equal format and resolution size" 的错误消息。我认为这是因为我没有告诉它缓冲区包含 jpeg。

有人知道如何做到这一点吗?

也许是这样的(未经测试):

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()))