2017-07-01 98 views
0

我有一個變量包含從imagecopyresampled函數返回的圖像,我想將此變量轉換爲base64編碼格式以返回到我的JavaScript文件。 錯誤是base64_encodeexif_imagetype函數不會將圖像作爲輸入。 這裏是我的代碼:如何將圖像轉換爲base64編碼格式

<?php 

$img_name  = $_POST['name']; 
$data   = file_get_contents($img_name); 
$crop_start_x = $_POST['crop_start_x']; 
$crop_start_y = $_POST['crop_start_y']; 
$crop_width = $_POST['crop_width']; 
$crop_height = $_POST['crop_height']; 

$dst_x = 0; 
$dst_y = 0; 
$src_x = $crop_start_x; 
$src_y = $crop_start_y; 
$dst_w = $crop_width; 
$dst_h = $crop_height; 
$src_w = $src_x + $dst_w; 
$src_h = $src_y + $dst_h; 

$dst_image = imagecreatetruecolor($dst_w, $dst_h); 
$src_image = imagecreatefromstring($data); 

imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); 

$type   = exif_imagetype($dst_image); 
$base64_image = 'data:image/' . $type . ';base64,' . base64_encode($dst_image); 

echo $base64_image; 

?> 

回答

0

這將工作

$image = 'folder/your_image.png'; 
$type = pathinfo($image, PATHINFO_EXTENSION); 
$imgdata = file_get_contents($image); 
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($imgdata); 

爲imagecopyresampled

imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); 
ob_start(); 
imagejpeg($dst_image, null); 
$img = ob_get_clean(); 
$base64 = base64_encode($img) 
+0

看到這個代碼需要$圖像的路徑上這就是爲什麼PATHINFO和BASE64_ENCODE的作品,但在我case我有dst_image作爲從imagecopyresampled函數返回,有類型差異。 – user3661745

+0

編輯了上面的代碼,現在你可以試試這個@ user3661745 – Prags

+0

Ok Thankyou這個工作。我想把這個字符串返回到JavaScript並解碼它顯示。你能幫我解決這個問題嗎? – user3661745