2012-01-12 11 views
0

デスクトップのgifファイルのデータをソケット経由でリモートデスクトップ(デスクトップ共有用)に送信しようとしていますが、PILを使用してデータの文字列を取得できません。 Pilオブジェクトを文字列に変換すると、ここに私のコード(私はファイルに書き込むことができ、そのようなデータを読むことができますが、非効率で、おそらくより良い方法があると思いますか?Python PILイメージオブジェクトから文字列データを取得する方法は?

from PIL import ImageGrab 
    import cStringIO 
    fakie = cStringIO.StringIO() 
    ImageGrab.grab().save(fakie, 'GIF') 
    data = fakie.getvalue() 
    fakie.close() 
    # This last bit of code is to see if the var data stored the right info in a str bc i need to send it through a socket 
    with open('C:\something\something\Desktop\image.gif', 'w') as f: 
     f.write(data) 

問題は(GIFファイルを台無しにされた)ファイルが書き込まれた後のgif画像のみページの上部1/10を表示することで、問題は私の内にある場合ので、私は思ったんだけどコンピュータまたは私のコード(私は非常に古いコンピュータでVistaを使用しています、少なくとも6年間私は思うと私はすぐに新しいものを得ている)。すべての入力をいただければ幸いです。

+2

"wb"引数を指定してgifファイルを開こうとしてください。 – HYRY

+0

'Image.tostring()'メソッドはどうですか? – wim

+0

THANKS HYRY働いた – Baboon

答えて

1

@HYRYは、イメージファイルを "w"ではなく "wb"モードで開く必要があります。 "b"を指定しないと、Pythonのデフォルトではテキストモードで開きます。つまり、ウィンドウでは0x0aバイトファイルに書き込まれると、OS代わりに0x0d 0x0aシーケンスを書き込みます。これは、行の終了シーケンスをWindowsのネイティブ行の終了に変換するためです。

"wb"モードでは、翻訳は行われず、イメージファイルは破損しません。

関連する問題