2017-11-28 5 views
0

バイト配列をPNGイメージに変換して特定のフォルダに保存しようとしています。バイト配列はC#サーバーから得られ、pythonクライアントはそれを受け取り、PNGイメージとして保存します。バイト配列をPNGイメージに変換して特定のフォルダに保存するにはどうすればよいですか?

私は、次の方法を試してみました:

reply = s.recv(4096) 
image = Image.open(io.BytesIO(reply)) 
image.save("img1.png","PNG") 

それがエラーを以下与える:

Traceback (most recent call last): 
File "C:\Users\imran.s\Desktop\UnityClient.py", line 46, in <module> 
image.save("img1.png","PNG") 

File "C:\python64\lib\site-packages\PIL\Image.py", line 1895, in save 
self.load() 

File "C:\python64\lib\site-packages\PIL\ImageFile.py", line 233, in load 
"(%d bytes not processed)" % len(b)) 

OSError: image file is truncated (3 bytes not processed) 

答えて

0

それはオーバーヘッドを表していない場合は、OpenCVの画像処理ライブラリを使用することができます。 OpenCVは画像を開いて保存し、必要に応じて処理することができます。

あなたのデータはあなたができるRGB形式の場合:データはすでにバイト順序[(青、緑、赤)であれば、あなたの場合は

import cv2 

# Loop to Load each pixel values in positions in array 
for ... 
    image[x, y] = (0, 0, 255) # B, G, R : different order 

、()、...、() ]:

# Then to save: 
cv2.imwrite('img1.png',reply) 
関連する問題