У меня есть скрипт Python, который генерирует изображение с использованием библиотеки подушек, я хочу использовать его в качестве своего бэкэнда и позволить laravel управлять им, Как мне передать сгенерированное python изображение обратно в запрос laravel?






Решение состояло в том, чтобы закодировать файл в base64 на стороне python и распечатать его в оболочке, и на стороне laravel декодировать его из base64. Вот коды ключей:
Python3:
import base64
from io import BytesIO
from PIL import Image, ImageDraw
background = Image.new('RGBA', (500, 500))
d = ImageDraw.Draw(background)
d.text((10, 10), "Hello World", fill=(255, 255, 0))
imgByteArr = BytesIO()
background.save(imgByteArr, format='PNG')
imgByteArr = base64.b64encode(imgByteArr.getvalue())
print(imgByteArr)
Ларавель:
public function newImage()
{
$process = new Process('python3 /path-to-script/shell.py');
$process->run();
if ( ! $process->isSuccessful())
{
return abort(404);
}
return response(base64_decode(str_replace_first('b', '', $process->getOutput())))->header('Content-Type', 'image/png');
}