2015-12-12 6 views
1


Я пытаюсь сделать PHP-скрипт для обрезания dataURL и вернуть другой dataURL, используя GD Library, но всегда получаю ошибки, как я могу это исправить?PHP Crop DataURL и return 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 

и черную картину
EDIT: $ _GET [ 'dataURL'] значение: data:image/png;base64,AAAFBfj42Pj4
Как я могу исправить это? Спасибо

+0

Что такое значение '$ _GET ['dataURL']'? Также почему «substr» применяется на изображении? Отправьте образец '$ _GET ['dataURL']'. – Samir

+0

@ Сообщение Самира отредактировано – doge45

+0

Зачем вам нужен субстрат на URL-адрес данных изображения? Попробуйте комментировать его // // $ image = substr ($ image, 22); ' – Samir

ответ

1

Я думаю, вы должны оставить часть подстраницы в своем коде. Потому что важны данные изображения (тип изображения).

Также длина вашего 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

Смежные вопросы