@Renzich

Как редактировать изображение без скачивания на пк?

Есть код, работает на хосте хероку. Я в него планирую добавить алгоритм, который бы получал от пользователя текст, брал миниатюру его аватарки из вк и соединял все это в цитату. С этим всем проблем нет, берется полностью черная картинка и все это в нее пихается по координатам. Только как это сделать в коде, который запущен не на пк, а на хостинге? Pillow вроде как работает только с загруженным изображением, а у меня на входе имеется только две ссылки (на миниатюру и по сути изображение с черным фоном).
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
в коде, который запущен не на пк, а на хостинге

Нет существенной разницы. У вас, разве что, может не быть прав записи в файловую систему, или отдельные её части.
Но ничто не мешает загрузить изображение миниатюры по ссылке прямо в память не сохраняя его в файл. Тут же в памяти вы можете создать картинку черного квадрата, вставить туда миниатюру, вписать текст и не сохраняя отправить в http-запросе.
Если у вас есть изображение в виде байтов, которые не загружены из файла, а загружены из интернета, то нет никакой разницы.
Вы эти байты можете отдать конструктору картинки и получите объект-картинку со всеми вытекающими. Если ваша библиотека работы с картинками умеет загружать только из файла, то, ок, создайте на основе вашей строки байт объект: io.BytesIO:
f = io.BytesIO(b"some initial binary data: \x00\x01")
ff = open('file_contained_same_bytes', 'rb')

f и ff по интерефейсу не будут различаться, вы можете загрузить картинку как из первого, так и из второго.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Pillow прекрасно работает и с изображениями в памяти.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект
22 нояб. 2024, в 22:26
3500 руб./за проект