Извлечение изображения из URL с использованием Python 3 - PullRequest
0 голосов
/ 01 сентября 2018

Я работаю над REST API с использованием Flask, в котором мне нужно получить изображение из URL-адреса, предоставленного пользователем в параметрах URL.

Вот что я пробовал:

import urllib
from io import BytesIO
from PIL import Image
from flask import Flask

app = Flask(__name__)


@app.route('/<path:image_url>')
def build_mask_rmv_bg(image_url):
    f = urllib.request.urlopen(image_url)
    jpeg_str = f.read()
    original_im = Image.open(BytesIO(jpeg_str))
    return original_im


if __name__ == '__main__':
    app.run()

А, вот мой запрос:

http://127.0.0.1:5000/http://raw.githubusercontent.com/tensorflow/models/master/research/deeplab/g3doc/img/image2.jpg

Я перепробовал оба пути HTTP и HTTTP в параметре URL. Но он возвращает следующую ошибку:

urllib.error.URLError: <urlopen error [SSL:CERTIFICATE_VERIFY_FAILED] certificate
verify failed (_ssl.c:749)>
127.0.0.1 - - [01/Sep/2018 09:37:51] "GET /http://raw.githubusercontent.com/tensorflow/models/master/research/deeplab/g3doc/img/image2.jpg HTTP/1.1" 500 -

Обновление:

Я обновил его с помощью wget, теперь он не возвращает никаких ошибок, но файл все еще не загружает изображение.

Вот обновленный код:

from flask import Flask
import wget
app = Flask(__name__)


@app.route('/<path:image_url>')
def build_mask_rmv_bg(image_url):
    url = str(image_url)
    # download the file contents in binary format
    print(url)
    wget.download(url, "img/image1.jpg")
    return 'something happened'


if __name__ == '__main__':
    app.run()

Что здесь не так?

Помогите мне, пожалуйста!

Заранее спасибо!

1 Ответ

0 голосов
/ 04 сентября 2018

Вы можете использовать модуль запросов Python, чтобы получить данные из URL, а затем сохранить их в файле в двоичном формате, например

f = open(filename, "wb")
r = requests.get(url)
f.write(r.content)
...