2010-12-31 11 views
13

Mam api uploadu, który jako obiekt odpowiedzi dostarcza (wraz z innymi obiektami wewnątrz obiektu Json) obraz jpeg zakodowany w base64.Jak utworzyć obraz GD z jpeg zakodowanego w base64?

utworzyć zakodowanego obrazu w celu:

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

Dane następnie umieścić wewnątrz formy za pomocą pola Javascript złożony.

Jak mogę ponownie utworzyć zasób GD, aby faktycznie zapisać ten obraz jako plik?

Wszystko w PHP.

Odpowiedz

29

Można użyć imagecreatefromstring() funkcję:

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

$formImage = imagecreatefromstring($data); 

"String" nie oznacza "prawdziwy" łańcuch. W tym przypadku oznacza dane bajtów/blob.

14

Jak mogę ponownie utworzyć zasób GD, aby faktycznie zapisać ten obraz jako plik?

Czy na pewno chcesz wykonać ten dodatkowy krok? Jak o:

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

tak, wygląda najlepszy sposób;) mój umysł był jakoś zablokowany: D +1 ale zamierzam przyjąć inną odpowiedź, ponieważ był directa odpowiedź na mój q –

+1

@Joe Hopfgartner - Harrumph! No cóż, szczęśliwego Nowego Roku dla ciebie, kiedy tylko to jest dla ciebie. : D –

+0

czasami ten krok go nie obciąża. TCPDF niektóre programy używają w tym celu, ale pracowałem z GD – Dennis

0

zrobiłem w ten sposób:

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