Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pygame图像到base64_Python_Base64_Pygame - Fatal编程技术网

Python pygame图像到base64

Python pygame图像到base64,python,base64,pygame,Python,Base64,Pygame,我像这样捕捉我的pygame程序的屏幕 data = pygame.image.tostring(pygame.display.get_surface(),"RGB") 如何将其转换为base64字符串?(无需将其保存到硬盘)。重要的是,没有保存到硬盘驱动器。我知道我可以将它保存到一个文件中,然后将该文件编码为base64,但我似乎不能“即时”编码 谢谢如果您愿意,可以将其保存到,基本上是以字符串形式存储的虚拟文件 但是,我确实建议使用这个模块,它有一个名为base64.

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

           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解码->直接从字节加载纹理