Как создать GD-образ из javascript с кодировкой base64?

У меня есть загрузка Api, которая в качестве объекта ответа поставляет (наряду с другим материалом внутри объекта Json) образ jpeg с кодировкой base64.

Я создаю кодированное изображение так:

$im; // gd image resource
ob_start();
imagejpeg($im);
$data = base64_encode(ob_get_clean());

Затем данные помещаются внутри поля формы с использованием javascript и отправляются.

Как я могу снова создать ресурс GD, чтобы я мог сохранить это изображение в виде файла?

Все в PHP.

Ответ 1

Вы можете использовать imagecreatefromstring():

$data = base64_decode($_POST['image_as_base64']);

$formImage = imagecreatefromstring($data);

"Строка" не означает "настоящую" строку. В этом случае это означает данные байт/blob.

Ответ 2

Как я могу снова создать ресурс GD, чтобы я мог сохранить это изображение в виде файла?

Вы уверены, что вам нужно сделать этот дополнительный шаг? Как насчет:

file_put_contents('MyFile.jpg', base64_decode($_POST['MyFormField']));

Ответ 3

Я сделал так:

// input is in format: data:image/png;base64,...
$str="data:image/png;base64,"; 
$data=str_replace($str,"",$_POST['image']); 
$data = base64_decode($data);
file_put_contents('tmp/'.mktime().'.png', $data);