2010-12-31 2 views
13

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

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

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

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

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

Все в PHP.

ответ

29

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

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

$formImage = imagecreatefromstring($data); 

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

14

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

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

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

да, выглядит лучший способ;) мой ум был как-то заблокированный: D +1, но собирается принять другой ответ, потому что это был Directa ответьте на мой q –

+1

@Joe Hopfgartner - Harrumph! Ну, с Новым годом вам все равно, когда это для вас. : D –

+0

иногда этот шаг не режет. TCPDF некоторое программное обеспечение, которое я использую для этого, но работал с GD – Dennis

0

Я сделал по этому пути:

// 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); 
Смежные вопросы