2016-06-01 10 views
0

PILを使用して画像のピクセルマップを読み込んだ後、マップをPostgreデータベースのVARCHAR列に文字列として格納します。私はこのデータベースのVARCHAR文字列を私のPythonスクリプトから再度読み込み、pix=im.load()を使用したときに得られる同じピクセルマップオブジェクトに変換したいので、このように解析できます。Python 3 putpixel(PIL)オブジェクトを文字列と逆に変換する

結果データベースを読んだ後にしたい文字列print(mypixmap)で完全に印刷された場合

 mypixmap[0][0] = 255 mypixmap[1][0] = 255 
    mypixmap[0][1] = 154 mypixmap[1][1] = 0 
    mypixmap[0][2] = 120 mypixmap[1][1] = 30 
    mypixmap[0][3] = 100 mypixmap[1][1] = 255 

のように...

タプルのリストは次のように気にいらないことになる。この場合

[(65, 65, 65, 255)(49, 49, 49, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(254, 254, 254, 255)(254, 254, 254, 255)(254, 254, 254, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(255, 255, 255, 255)(168, 168, 168, 255)(133, 133, 133, 255)(255, 255, 255, 255)] 

しかしprint(mypixmap[0][0])いかなるなし65 を与えるだろう角括弧は最初の整数を検索するためです。

私はPostgreのドライバとSQLを知っていますので、オブジェクトをデータベースに格納する必要があります(おそらくVARCHARはいいですか?)以前のように戻してください。

私は適切な条件を使用しなかったと申し訳ありませんが、私はまだPythonで私の最初のステップを学んでいます。

+0

マップをPostgresqlに保存しないでください。イメージをバイナリ形式で['bytea'](https://www.postgresql.org/docs/current/static/datatype-binary.html)に保存します。 –

答えて

1

マッピングをStringに変換し、.remove()バイトのオクテットでないすべての文字を変換してコードを作成しました。この文字列をVARCHARカラムに保存すると、それを元に戻すことができます。オクテット以外のすべてを取り除き、次にインデックス[]で文字列を使用してオクテットを解析します。

関連する問題