python: манипулируйте изображениями онлайн, загружая их - PullRequest
0 голосов
/ 10 октября 2018

Я использую этот код для сравнения сходства двух профильных изображений, принадлежащих двум разным социальным сетям, сначала я загружаю изображения с двух веб-сайтов, а затем для каждого пользователя я даю локальные пути к изображениям двум переменным,Интересно, есть ли какая-либо альтернатива, позволяющая мне манипулировать этими изображениями в Интернете, а не загружать их, то есть: давать URL-адрес изображения кода вместо локального пути (я не хочу загружать изображения на свой локальный компьютер, потому что это займетслишком много места при работе с миллионами из них)

from PIL import Image
import imagehash
hash0 = imagehash.average_hash(Image.open('quora_photo.jpg')) 
hash1 = imagehash.average_hash(Image.open('twitter_photo.jpeg')) 
cutoff = 5

if hash0 - hash1 < cutoff:
    print('images are similar')
else:
    print('images are not similar')

1 Ответ

0 голосов
/ 10 октября 2018

Каждый раз, когда вы видите изображение в вашем браузере, ваша машина уже загружала его.Невозможно манипулировать изображением без его загрузки.

Взгляните на модуль tempfile , вы можете создавать временные файлы, чтобы быть уверенными, что они будут удалены в будущем.Или удалите файлы после того, как вы манипулируете ими, как @ArnavBorborah сказал

РЕДАКТИРОВАТЬ:

Взгляните на этот метод urllib.request.urlretrieve

Выможно адаптировать свой пример:

import urllib.request
local_filename, headers = urllib.request.urlretrieve(<image_url>)
with open(local_filename) as image:
    #do stuff

Второй аргумент, если он присутствует, указывает местоположение файла для копирования (если оно отсутствует, это будет временный файл с сгенерированным именем).

Если вы не укажете аргумент имени файла, urllib создаст временный файл

...