0

我像这样捕获我的 pygame 程序的屏幕

           data = pygame.image.tostring(pygame.display.get_surface(),"RGB")

如何将其转换为 base64 字符串?(无需将其保存到硬盘)。重要的是没有保存到 HDD。我知道我可以将其保存到文件中,然后将文件编码为 base64,但我似乎无法“即时”编码

谢谢

4

2 回答 2

5

如果需要,可以将其保存到StringIO,它基本上是存储为字符串的虚拟文件。

但是,我真的建议使用base64模块,它有一个名为base64.b64encode. 它可以很好地处理您的“即时”要求。

代码示例:

import base64
data = pygame.image.tostring(pygame.display.get_surface(),"RGB")
base64data = base64.b64encode(data)

快乐编码!

于 2012-07-26T14:14:18.750 回答
0

实际上 -pygame.image.tostring() 是一个非常奇怪的函数(真的不理解它返回的二进制字符串,我找不到任何可以正确处理它的东西)。

在 pygame bitbucket 上似乎有一个增强问题:(https://bitbucket.org/pygame/pygame/issue/48/add-optional-format-argument-to

我是这样解决的:

            data = cStringIO.StringIO()
            pygame.image.save(pygame.display.get_surface(), data)
            data = base64.b64encode(data.getvalue())

所以最后你得到了有效且正确的 base64 字符串。它似乎有效。还不确定格式,将添加更多信息tmrw

于 2012-07-26T21:16:41.653 回答