我抓住我的pygame的程序的屏幕這樣pygame的圖像爲base64
data = pygame.image.tostring(pygame.display.get_surface(),"RGB")
我如何轉換成字符串的base64? (而不必將其保存到HDD)。重要的是沒有硬盤保存。我知道我可以將它保存到一個文件,然後只對文件進行編碼爲Base64,但我似乎無法編碼「對飛」
感謝
我抓住我的pygame的程序的屏幕這樣pygame的圖像爲base64
data = pygame.image.tostring(pygame.display.get_surface(),"RGB")
我如何轉換成字符串的base64? (而不必將其保存到HDD)。重要的是沒有硬盤保存。我知道我可以將它保存到一個文件,然後只對文件進行編碼爲Base64,但我似乎無法編碼「對飛」
感謝
實際上 - pygame.image.tostring()
是一個很奇怪的函數(真的不理解它返回的二進制字符串,我找不到任何可以處理它的東西)。
似乎是在pygame的到位桶這一增強的問題: (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
ok,我發現這個: – kosta5 2012-07-27 12:10:22
好吧,我發現這個: 1.首先pygame.image.tostring()
提供存儲到二進制文件y字符串RGB格式(你可以在base64中編碼,並用於其他操作) 2.使用建議的StringIO方法與pygame.image.save()
將產生期望的base64字符串,但它不再是RGB - 它是JPG(默認)編碼。你可以在未來的pygame版本中更改格式(請參閱此答案中的鏈接) ===>我結束了使用pygame.image.tostring - > base64編碼 - >通過TCP傳輸 - > base64解碼 - >直接加載紋理從字節 –
kosta5
2012-07-27 12:16:45
是的 - 這就是我最初的想法。但它不起作用。與從文件創建它(通過調用pygame.image.save())並保存到圖片文件相比,我得到不同的base64字符串。我得到很長的重複字符串,你提到的方式 – kosta5 2012-07-26 18:49:04
看起來像:(重複3 // f3 // f3 // f3 // f3 // f3 // f3 // f3 // f3 // f3 // f3 // f3 // f3 // // F3 F3 // // F3 F3 // // F3 F3 // // F3 F3 // // F3 F3 // // d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3djo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Ojo6Of3 F3 // // F3 F3 // // F3 F3 // f3 // f3 // f3 // f3 // f3 // f3 // f3 // f3 // f3 // – kosta5 2012-07-26 18:49:43
這可能是因爲它是原始位圖數據,如果知道分辨率,GIMP可以處理它 – Kupiakos 2013-06-06 05:02:57