Я хочу загрузить изображение из Интернета, но всегда получаю сообщение об ошибке независимо от используемого метода. Однако у меня нет проблем с загрузкой других изображений с помощью этого метода.
Способ 1
Использование запросов Python и библиотек Pillow. Здесь изображение должно быть загружено непосредственно с URL-адреса.
import requests
from PIL import Image
from io import BytesIO
url = 'https://mobec.sk/proxy/geo?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&layers=custom%3Avrbovce_elektrina&tiled=true&STYLES=&WIDTH=512&HEIGHT=512&CRS=EPSG%3A3857&FORMAT_OPTIONS=dpi%3A180&BBOX=1947003.9844800085%2C6242153.477880634%2C1949449.969385134%2C6244599.46278576'
response = requests.get(url)
img = Image.open(BytesIO(response.content)) # error occurs here
img.save('output.png')
Я получаю следующую ошибку:
OSError: cannot identify image file <_io.BytesIO object at 0x04956510>
Метод 2
Использование библиотеки Python Selenium и chromedriver. Здесь я пытаюсь показать изображение в веб-браузере и распечатать всю страницу, используя библиотеку Selenium.
from selenium import webdriver
from PIL import Image
from io import BytesIO
url = 'https://mobec.sk/proxy/geo?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&layers=custom%3Avrbovce_elektrina&tiled=true&STYLES=&WIDTH=512&HEIGHT=512&CRS=EPSG%3A3857&FORMAT_OPTIONS=dpi%3A180&BBOX=1947003.9844800085%2C6242153.477880634%2C1949449.969385134%2C6244599.46278576'
chrome = webdriver.Chrome('path/to/chromedriver')
chrome.get(url)
png = chrome.get_screenshot_as_png()
im = Image.open(BytesIO(png))
im.save('output.png')
chrome.quit()
Проблема с этим методом заключается в том, что изображение не загружается (не отображается) в браузере Chrome, открытом драйвером chromedriver. При ручной вставке ссылки в обычное (настольное приложение) Chrome отображается изображение.