Как создать изображение GD из JPEG в кодировке base64? - PullRequest
14 голосов
/ 31 декабря 2010

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

Я создаю закодированное изображение следующим образом:

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

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

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

Все в PHP.

Ответы [ 3 ]

31 голосов
/ 31 декабря 2010

Вы можете использовать функцию imagecreatefromstring () :

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

$formImage = imagecreatefromstring($data);

«Строка» не означает «настоящую» строку. В этом случае это означает данные байтов / BLOB-объектов.

14 голосов
/ 31 декабря 2010

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

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

file_put_contents('MyFile.jpg', base64_decode($_POST['MyFormField']));
0 голосов
/ 22 февраля 2014

Я так сделал:

// 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);
...