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