我像这样捕捉我的pygame程序的屏幕
data = pygame.image.tostring(pygame.display.get_surface(),"RGB")
如何将其转换为base64字符串? (无需将其保存到HDD)。重要的是没有保存到HDD。我知道我可以将它保存到文件然后只是将文件编码为base64但我似乎无法“动态”编码
感谢
答案 0 :(得分:5)
如果需要,可以将其保存到StringIO,这基本上是一个存储为字符串的虚拟文件。
但是,我真的建议使用base64模块,该模块有一个名为base64.b64encode
的方法。它可以随时处理您的动作。要求很好。
代码示例:
import base64
data = pygame.image.tostring(pygame.display.get_surface(),"RGB")
base64data = base64.b64encode(data)
快乐的编码!
答案 1 :(得分: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