2010-12-31 20 views
13

Tengo una API de carga que, como objeto de respuesta, entrega (junto con otras cosas dentro de un objeto Json) una imagen jpeg codificada en base64.Cómo crear imágenes GD a partir de jpeg codificado en base64?

I crear la imagen codificada como tan:

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

Los datos a continuación, se coloca dentro de un campo de formulario usando javascript y entregados.

¿Cómo puedo crear de nuevo un recurso GD para que pueda guardar esa imagen como un archivo?

Todo en PHP.

Respuesta

29

Puede utilizar la función imagecreatefromstring():

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

$formImage = imagecreatefromstring($data); 

"Cadena" no significa una cadena "real". En ese caso, significa datos de bytes/blob.

14

¿Cómo puedo crear un recurso GD de nuevo para que pueda guardar esa imagen como un archivo?

¿Estás seguro de que necesitas hacer ese paso adicional? ¿Qué tal:

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

sí, se ve la mejor manera;) mi mente de alguna manera estaba bloqueado: D 1, pero va a aceptar la otra respuesta porque era una directa responde a mi q –

+1

@Joe Hopfgartner - Harrumph! Bueno, un Feliz Año Nuevo para ti de todos modos, siempre que sea para ti. : D –

+0

a veces este paso no lo corta. TCPDF algún software que utilizo metió en esto, pero trabajó con GD – Dennis

0

lo hice de esta manera:

// 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); 
Cuestiones relacionadas