Читайте .jpg из ОЗУ - PullRequest
       22

Читайте .jpg из ОЗУ

1 голос
/ 08 мая 2019
from io import StringIO
from PIL import Image
import requests

response = requests.get(image.url)

# Works fine, but requests a disk write.
f = open('tmp.jpg', 'bw')
f.write(response.content)
img = Image.open('tmp.jpg')

# Fails with `OSError: cannot identify image file <_io.StringIO object at 0x7fb666238a68>`
#file = StringIO(str(response.content))
#img = Image.open(file)

Я пытаюсь запустить код из этого урока , но в python3.Закомментированная версия является наиболее близкой к исходной идее «получить изображение из сети в оперативную память и работать с этим».Я не против использовать cv2, если проще.Как мне написать этот код по-питонски и эффективно?

1 Ответ

1 голос
/ 08 мая 2019

Как сказал Марк Сетчелл, вы, вероятно, хотите BytesIO, а не StringIO.

from io import BytesIO
from PIL import Image
import requests

response = requests.get(image.url)

file = BytesIO(response.content)
img = Image.open(file)
...