2017-07-03 1 views
0

[OK]を、ないをstrされなければならないので、私はこのコードを持っている:がたStringIO initial_valueがバイト

from PIL import Image 
import os, sys 
import requests 
from io import StringIO 

url = "https://cdn.discordapp.com/avatars/247096918923149313/34a66572b9339acdaa1dedbcb63bc90a.png?size=256" 
response = requests.get(url) 
pp = Image.open(StringIO(response.content)) 
pp.save("image1.png") 

pp = Image.open("image2c.png").convert("LA") 
pp.save("image2c.png") 

background = Image.open("image1.png").convert("RGBA") 
foreground = Image.open("image2c.png").convert("RGBA") 
foreground = foreground.resize((256, 256), Image.BILINEAR) 
background.paste(foreground, (125, 325), foreground) 
background.show() 

これはエラーを返します:TypeError: initial_value must be str or None, not bytes

私が間違っているつもりだところ、私は見ることができません。誰も助けることができますか?

+0

代わりに 'pp = Image.open(BytesIO(response.content))'を試してください。 –

答えて

1

responseはバイナリデータ(bytes)であり、Imageもまたいくつかのバイナリデータを必要とします。

だから:

pp = Image.open(StringIO(response.content)) 

が途中でテキストベースのIOオブジェクトを注入されたテキストへのバイトを変換することができない(と次の問題があろう:画像にテキストデータを読み取ることができない)

修正:

from io import BytesIO 
pp = Image.open(BytesIO(response.content)) 

EDIT:さらに良く、ここでは答えのようなImage.open(response.raw)を使用します。How to download image using requests

関連する問題