Python pygame图像到base64
我像这样捕捉我的pygame程序的屏幕Python pygame图像到base64,python,base64,pygame,Python,Base64,Pygame,我像这样捕捉我的pygame程序的屏幕 data = pygame.image.tostring(pygame.display.get_surface(),"RGB") 如何将其转换为base64字符串?(无需将其保存到硬盘)。重要的是,没有保存到硬盘驱动器。我知道我可以将它保存到一个文件中,然后将该文件编码为base64,但我似乎不能“即时”编码 谢谢如果您愿意,可以将其保存到,基本上是以字符串形式存储的虚拟文件 但是,我确实建议使用这个模块,它有一个名为base64.
data = pygame.image.tostring(pygame.display.get_surface(),"RGB")
如何将其转换为base64字符串?(无需将其保存到硬盘)。重要的是,没有保存到硬盘驱动器。我知道我可以将它保存到一个文件中,然后将该文件编码为base64,但我似乎不能“即时”编码
谢谢如果您愿意,可以将其保存到,基本上是以字符串形式存储的虚拟文件 但是,我确实建议使用这个模块,它有一个名为
base64.b64encode
的方法。它可以很好地满足您的“即时”需求
代码示例:
import base64
data = pygame.image.tostring(pygame.display.get_surface(),"RGB")
base64data = base64.b64encode(data)
快乐编码 如果需要,可以将其保存到,它基本上是一个以字符串形式存储的虚拟文件 但是,我确实建议使用这个模块,它有一个名为
base64.b64encode
的方法。它可以很好地满足您的“即时”需求
代码示例:
import base64
data = pygame.image.tostring(pygame.display.get_surface(),"RGB")
base64data = base64.b64encode(data)
快乐编码 实际上-
pygame.image.tostring()
是一个非常奇怪的函数(真的不理解它返回的二进制字符串,我找不到任何可以正确处理它的函数)
pygame bitbucket上似乎存在一个增强问题:
()
我是这样想的:
data = cStringIO.StringIO()
pygame.image.save(pygame.display.get_surface(), data)
data = base64.b64encode(data.getvalue())
因此,最终您将获得有效且正确的base64字符串。这似乎奏效了。还不确定格式tho,将添加更多信息tmrw实际上-
pygame.image.tostring()
是一个非常奇怪的函数(真的不理解它返回的二进制字符串,我找不到任何可以正确处理它的函数)
pygame bitbucket上似乎存在一个增强问题:
()
我是这样想的:
data = cStringIO.StringIO()
pygame.image.save(pygame.display.get_surface(), data)
data = base64.b64encode(data.getvalue())
因此,最终您将获得有效且正确的base64字符串。这似乎奏效了。现在还不确定格式,但会添加更多信息tmrw是的,这也是我最初的想法。但它不起作用。与从文件创建base64字符串(通过调用pygame.image.save())并首先保存到图片文件相比,我通过这种方式得到了不同的base64字符串。我得到很长的重复字符串,就像你提到的那样:3/3/3/3/3 3/3/3/3/3/3/3/3/3/3/3/3/3/3/3 3/3/3 3/3/3 3 3/3 3 3/3 3/3 3 3/3 3 3/3 3 3 3 3/3 3 3 3 3 3 3/3 3 3 3 3 3 3 3 D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3O6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO3//f3////f3//f3//f3//f3 f3//f3////f3 f3//f3////f3 f3 f3//f3//////f3//f3 f3 f3 f3////f3 f3//f3 f3////f3////f3 f3////f3 f3 f3//f3 f3 f3//////f3 f3 f3 f3 f3与从文件创建base64字符串(通过调用pygame.image.save())并首先保存到图片文件相比,这种方式会产生不同的base64字符串。我得到了非常长的重复字符串,就像您提到的那样:3/3/3/3/3 3/3/3/3/3/3/3/3/3/3/3/3/3/3/3 3/3/3 3/3/3 3 3/3 3 3/3 3/3 3 3/3 3 3/3 3 3 3 3/3 3 3 3 3 3 3/3 3 3 3 3 3 3 3 D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3O6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJO6OJ3//f3//f3//f3//f3//f3 f3 f3 f3//f3//f3//f3 f3//f3//f3 f3 f3//f3 f3////f3//f3 f3 f3 f3////f3 f3 f3//f3 f3////f3////f3 f3//f3 f3 f3//f3//f3 f3////f3 f3 f3 f3 f3 f3这可能是提供以RGB格式存储到二进制字符串中(您可以在base64中对其进行编码并将其用于其他操作)2.将建议的StringIO方法与
pygame.image.save()配合使用将生成预期的base64字符串,但它不再是RGB-它是JPG(默认情况下)编码的。你可以在以后的pygame版本中更改格式(请参见此答案中的链接)=>我最终使用了pygame.image.tostring->base64编码->TCP传输->base64解码->直接从bytesok加载纹理。我发现:1.首先pygame.image.tostring()
提供以RGB格式存储到二进制字符串中(您可以在base64中对其进行编码并将其用于其他操作)2.将建议的StringIO方法与pygame.image.save()配合使用将生成预期的base64字符串,但它不再是RGB-它是JPG(默认情况下)已编码。您可以在未来的pygame版本中更改格式(请参阅此答案中的链接)==>我最终使用pygame.image.tostring->base64编码->TCP传输->base64解码->直接从字节加载纹理