Как скопировать удаленное изображение в Python?

См. Runtime.exec() и класс Process . В простейшей форме:

Process myProcess = Runtime.getRuntime().exec(command);
...

Обратите внимание, что вам также необходимо прочитать вывод процесса (например: myProcess.getInputStream()) - или процесс будет зависать на некоторых системах. Это может быть очень запутанным в первый раз и должно быть включено в любое введение в эти API. См. Ответ Джеймса П. для примера.

Вы также можете посмотреть в новый класс ProcessBuilder , который упрощает изменение переменных среды и вызывает подпроцессы:

Process myProcess = new ProcessBuilder(command, arg).start();
...

16
задан jdphenix 20 March 2014 в 05:25
поделиться

3 ответа

Для загрузки:

import urllib2
img = urllib2.urlopen("http://example.com/image.jpg").read()

Для проверки можно использовать PIL

import StringIO
from PIL import Image
try:
    im = Image.open(StringIO.StringIO(img))
    im.verify()
except Exception, e:
    # The image is not valid

Если вы просто хотите проверить, что это изображение, даже если данные изображения недействительны: Вы можно использовать imghdr

import imghdr
imghdr.what('ignore', img)

Метод проверяет заголовки и определяет тип изображения. Он вернет None, если изображение невозможно идентифицировать.

33
ответ дан 30 November 2019 в 11:22
поделиться

Загрузка материалов

import urllib
url = "http://example.com/image.jpg"
fname = "image.jpg"
urllib.urlretrieve( url, fname )

Проверить, что это образ, можно разными способами. Самая сложная проверка - открыть файл с помощью библиотеки изображений Python и посмотреть, не выдает ли он ошибку.

Если вы хотите проверить тип файла перед загрузкой, посмотрите на MIME-тип, который выдает удаленный сервер.

import urllib
url = "http://example.com/image.jpg"
fname = "image.jpg"
opener = urllib.urlopen( url )
if opener.headers.maintype == 'image':
    # you get the idea
    open( fname, 'wb').write( opener.read() )
5
ответ дан 30 November 2019 в 11:22
поделиться

То же самое с использованием httplib2 ...

from PIL import Image
from StringIO import StringIO
from httplib2 import Http

# retrieve image
http = Http()
request, content = http.request('http://www.server.com/path/to/image.jpg')
im = Image.open(StringIO(content))

# is it valid?
try:
    im.verify()
except Exception:
    pass  # not valid
2
ответ дан 30 November 2019 в 11:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: