2015-12-12 58 views
1


我想做一個PHP腳本來裁剪dataURL並返回另一個dataURL,使用GD庫,但我總是得到錯誤,我該如何解決?PHP作物DataURL並返回DataURL

if(isset($_GET['render'])) { 
    if((isset($_GET['render_x'])) && (isset($_GET['render_y']))) { 
     if(isset($_GET['dataURL'])) { 
      $image = $_GET['dataURL']; // the image to crop 
      $image = substr($image,22); 
      $img = imagecreatetruecolor('200','150'); 
      $org_img = imagecreatefromstring(base64_decode($image)); 
      imagecopy($img,$org_img, 0, 0, 20, 20, 200, 150); 
      ob_start(); 
      imagepng($img); 
      $image_data = ob_get_contents(); 
      ob_end_clean(); 
      $image_data_base64 = base64_encode($image_data); 
      imagedestroy($img); 
      echo '<img src="data:image/png;base64,'.$image_data_base64.'" ><p>'; 
     } 
    } 
} 

我該如何解決這個問題?我得到了這些錯誤:

Warning: imagecreatefromstring(): gd warning: one parameter to a memory allocation multiplication is negative or zero, failing operation gracefully in xxx on line 29 

Warning: imagecreatefromstring(): Passed data is not in 'WBMP' format in xxx on line 29 

Warning: imagecreatefromstring(): Couldn't create GD Image Stream out of Data in xxx on line 29 

Warning: imagecopy() expects parameter 2 to be resource, boolean given in 

和黑色畫面
編輯:$ _GET [ 'dataURL' 值:data:image/png;base64,AAAFBfj42Pj4
我該如何解決呢?謝謝

+0

'$ _GET ['dataURL']'的值是多少?爲什麼'substr'應用於圖像?請發佈樣例'$ _GET ['dataURL']'。 – Samir

+0

@Samir post編輯 – doge45

+0

爲什麼你需要substr對圖像數據的URL?嘗試評論它'// $ image = substr($ image,22);' – Samir

回答

1

我認爲你應該忽略你的代碼中的substr部分。因爲圖像數據(圖像類型)也很重要。

也是你的url的長度限制在每個瀏覽器的一定數量的字符。所以要保存在2000字符以下。如果這是不可能的。以評論中建議的@tacone的形式發佈圖片的內容。

if(isset($_GET['render'])) { 
    if((isset($_GET['render_x'])) && (isset($_GET['render_y']))) { 
     if(isset($_GET['dataURL'])) { 
      $image = $_GET['dataURL']; // the image to crop 
      //$image = substr($image,22); 
      $img = imagecreatetruecolor('200','150'); 
      $org_img = imagecreatefromstring(base64_decode($image)); 
      imagecopy($img,$org_img, 0, 0, 20, 20, 200, 150); 
      ob_start(); 
      imagepng($img); 
      $image_data = ob_get_contents(); 
      ob_end_clean(); 
      $image_data_base64 = base64_encode($image_data); 
      imagedestroy($img); 
      echo '<img src="data:image/png;base64,'.$image_data_base64.'" ><p>'; 
     } 
    } 
} 
+0

這不適用於我。請提供給我$ _GET ['dataURL']的值及其格式。(jpg/png/wbmp)? – SwR