2016-05-18 34 views

回答

2

imagecreatefromjpeg()函數從文件創建圖像variable,但不能倒退。雖然您有base64中的圖像源,但您可以使用簡單的file_put_contents()函數來保存文件。例如:

$data = 'data:image/jpeg;base64,BASE64_HERE'; 

list($type, $data) = explode(';', $data); 
list(, $data)  = explode(',', $data); 
$data = base64_decode($data); 

file_put_contents('/tmp/image.jpg', $data); 

您還可以使用imagecreatefromjpeg(),然後imagejpeg()如果是更優選的方法你。但是,最好的方法是使用imagecreatefromstring(),因爲它會自動檢測圖像時是jpggifpng或等例:

$data = 'data:image/jpeg;base64,BASE64_HERE'; 
$image = imagecreatefromstring(base64_decode($data)); 
imagejpeg($image, 'image.jpg'); 
+0

k好......但是當我使用'$ data ='data:image/png; base64,BASE64_HERE'; imagecreatefrompng($ data);'然後它的工作正常。這些功能的工作有什麼區別嗎?或者你能解釋這些功能是如何工作的嗎?並且感謝您的快速回復 –

+0

當您使用'$ im = imagecreatefrompng()'時,您仍然需要使用其他函數(如imagepng($ im,'image.png');'或者如果您想要顯示它'header('Content-Type:image/png'); imagepng($ im); imagedestroy($ im); '。 – Gvidas

+0

區別在於'imagecreatefrompng()'和'imagecreatefromjpeg()'只將圖像保存在*圖像變量中*並不保存到文件中。 – Gvidas

相關問題