2010-12-31 13 views
13

Tôi có một Api tải lên như một đối tượng phản hồi cung cấp (cùng với các nội dung khác bên trong một đối tượng Json) một hình ảnh jpeg được mã hóa base64.Cách tạo hình ảnh GD từ jpeg được mã hóa base64?

tôi tạo ra các hình ảnh được mã hóa như vậy:

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

Dữ liệu sau đó được đặt bên trong một trường mẫu sử dụng javascript và đệ trình.

Làm cách nào để tạo tài nguyên GD từ đó một lần nữa để tôi thực sự có thể lưu hình ảnh đó dưới dạng tệp?

Mọi thứ trong PHP.

Trả lời

29

Bạn có thể sử dụng chức năng imagecreatefromstring():

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

$formImage = imagecreatefromstring($data); 

"String" không có nghĩa là "thật" chuỗi. Trong trường hợp đó, nó có nghĩa là dữ liệu byte/blob.

14

Làm cách nào để tạo tài nguyên GD từ đó một lần nữa để tôi thực sự có thể lưu hình ảnh đó dưới dạng tệp?

Bạn có chắc chắn cần thực hiện thêm bước đó không? Làm thế nào về:

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

yeah, trông cách tốt nhất;) tâm trí của tôi đã bằng cách nào đó bị chặn: D 1 nhưng sẽ chấp nhận câu trả lời khác bởi vì nó là một DIRECTA trả lời cho q của tôi –

+1

@Joe Hopfgartner - Harrumph! Vâng, một năm mới hạnh phúc cho bạn anyway, bất cứ khi nào đó là dành cho bạn. : D –

+0

đôi khi bước này không cắt nó. TCPDF một số phần mềm tôi sử dụng chocked này nhưng làm việc với GD – Dennis

0

tôi đã làm theo cách này:

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