То, что я пытаюсь сделать, довольно просто, когда мы имеем дело с локальным файлом, но проблема возникает, когда я пытаюсь сделать это с помощью удаленного URL.
По сути, я пытаюсь создать объект изображения PIL из файла, извлеченного из URL. Конечно, я всегда мог просто извлечь URL-адрес и сохранить его во временном файле, а затем открыть его в объект изображения, но это кажется очень неэффективным.
Вот что у меня есть:
Image.open(urlopen(url))
Он жалуется, что seek()
не доступен, поэтому я попробовал это:
Image.open(urlopen(url).read())
Но это тоже не сработало. Есть ли лучший способ сделать это, или запись во временный файл является приемлемым способом сделать это?
python
python-imaging-library
Дэниел Куинн
источник
источник
Ответы:
В Python3 модули StringIO и cStringIO исчезли.
В Python3 вы должны использовать:
источник
requests
Пакет генерирует 503 код состояния при получении изображения с URL. Вместо этого мне пришлось прибегнутьhttp.client
к получению изображения.Image.open(response.raw)
. Теперь PIL автоматически проверяет это и выполняет упаковку BytesIO под капотом. От: pillow.readthedocs.io/en/3.0.x/releasenotes/2.8.0.htmlВы можете попробовать использовать StringIO
источник
Я использую библиотеку запросов. Кажется, это более надежно.
источник
pip3.4 install pillow
.Для тех из вас, кто использует подушку, начиная с версии 2.8.0, вы можете:
или если вы используете
requests
:Ссылки:
источник
Используйте,
StringIO
чтобы превратить прочитанную строку в подобный файлу объект:источник
Для тех, кто делает некоторую пост-обработку sklearn / numpy (т.е. глубокое обучение), вы можете обернуть объект PIL с помощью np.array (). Это может избавить вас от необходимости заходить в Google, как я:
источник
Python 3
Jupyter Notebook и IPython
В отличие от других методов, этот метод также работает в цикле for!
источник
Возможно, рекомендуемый способ ввода / вывода изображения в эти дни - использовать специальный пакет ImageIO . Данные изображения могут быть прочитаны непосредственно с URL с помощью одной простой строки кода:
Многие ответы на этой странице предшествуют выпуску этого пакета и поэтому не упоминают его. ImageIO начинался как компонент набора инструментов Scikit-Image . Он поддерживает ряд научных форматов помимо тех, которые предоставляет популярная библиотека обработки изображений PILlow . Он оборачивает все это в чистый API исключительно для ввода / вывода изображения. Фактически, SciPy удалила свою собственную программу чтения / записи изображений в пользу ImageIO .
источник
выберите изображение в Chrome, щелкните правой кнопкой мыши на нем, нажмите
Copy image address
, вставьте его вstr
переменную (my_url
), чтобы прочитать изображение:Открой это;
источник