アプリケーションのバックエンドから、jpegファイルであるはずのファイルのリストが渡されました。しかし、私の人生の間、それらをPILイメージオブジェクトに変換することはできませんでした。私が電話するとき
str(curimg)
私は戻ってきます:
<type 'str'>
。 open()、. read、io.BytesIO(img.read()を使用して何もしませんでしたが、文字列として表示され続けます。文字列を印刷すると、認識できない文字が表示されます。誰か知っていますかpythonこの文字列をjpegとして解釈し、.sizeとnp.arrayを呼び出すことができるピルイメージに変換する方法を教えてください。
StringIOオブジェクトをPILに渡して、その方法で開くことができるはずです。
すなわち:
from PIL import Image
import StringIO
tempBuff = StringIO.StringIO()
tempBuff.write(curimg)
tempBuff.seek(0) #need to jump back to the beginning before handing it off to PIL
Image.open(tempBuff)
同じことですが、少し簡単です
from PIL import Image
import io
Image.open(io.BytesIO(image))
注意:
画像がウェブ上にある場合;最初にダウンロードする必要があります。
import requests
image = requests.get(image_url).content #download image from web
そして、それをioモジュールに渡します。
io.BytesIO(image)
画像がHDにある場合; PILで直接開くことができます。
Image.open('image_file.jpg') #image in your HD
私にとって、上記の解決策はどれもうまくいきませんでした。
私はついにこのように文字列を正しく読み取ることができました:
from PIL import Image
img = Image.frombytes('RGB', (640, 480), img_str, 'raw')
それをテストするには、次のようなことを行うことができます
image = Image.open("some.png")
print(image.mode, image.size) # OUT: 'RGB' (640, 480)
image = Image.frombytes('RGB', (640, 480), image.tobytes(), 'raw')
image.show()