このようにpygameプログラムの画面をキャプチャします
data = pygame.image.tostring(pygame.display.get_surface(),"RGB")
base64文字列に変換するにはどうすればよいですか? (HDDに保存する必要はありません)。HDDへの保存がないことが重要です。ファイルに保存してから、ファイルをbase64にエンコードできることは知っていますが、「その場で」エンコードできないようです
ありがとう
必要に応じて、基本的に文字列として保存される仮想ファイルであるStringIOに保存できます。
ただし、 というメソッドを持つbase64モジュールを使用することを強くお勧めしますbase64.b64encode
。「その場で」の要件をうまく処理します。
コード例:
import base64
data = pygame.image.tostring(pygame.display.get_surface(),"RGB")
base64data = base64.b64encode(data)
ハッピーコーディング!
実際には -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