0

このようにpygameプログラムの画面をキャプチャします

           data = pygame.image.tostring(pygame.display.get_surface(),"RGB")

base64文字列に変換するにはどうすればよいですか? (HDDに保存する必要はありません)。HDDへの保存がないことが重要です。ファイルに保存してから、ファイルをbase64にエンコードできることは知っていますが、「その場で」エンコードできないようです

ありがとう

4

2 に答える 2

5

必要に応じて、基本的に文字列として保存される仮想ファイルであるStringIOに保存できます。

ただし、 というメソッドを持つbase64モジュールを使用することを強くお勧めしますbase64.b64encode。「その場で」の要件をうまく処理します。

コード例:

import base64
data = pygame.image.tostring(pygame.display.get_surface(),"RGB")
base64data = base64.b64encode(data)

ハッピーコーディング!

于 2012-07-26T14:14:18.750 に答える
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

于 2012-07-26T21:16:41.653 に答える