2013-10-11 2 views
1

Я пытаюсь получить изображение из db и изменить его размер раньше, чем клиент его получит. Эта работа правильно, но, естественно, изображение полностью размер:Imagecreatefromstring и изменение размера

$im = imagecreatefromstring($data); 
    if ($im !== false) { 
     header('Content-Type: image/jpeg'); 
     imagejpeg($im); 
     imagedestroy($im); 
    } 

Так я судимое это:

$im = imagecreatefromstring($data); 
     if ($im !== false) { 
      header('Content-Type: image/jpeg'); 

      $percent = 0.5; 
      $width = imagesx($im); 
      $height = imagesy($im); 
      $newwidth = $width * $percent; 
      $newheight = $height * $percent; 

      $img = imagecreatetruecolor($new_w,$new_h); 
      imagecopyresized($img,$im,0,0,0,0,$new_w,$new_h,$width,$height); 

      imagejpeg($im); 
      imagedestroy($im); 
     } 

но браузер возвращает ошибку, говоря «изображение не может быть отображено обусловленно содержит ошибки ».

Извините за мой английский.

+0

Скачать неисправное изображение, откройте его с помощью текстового редактора и поиск сообщений об ошибках. – Oswald

+0

Я думаю, что вы меняете значения $ new_w, $ new_h – vijaykumar

+0

Вы пробовали эхом новую ширину и высоту, если это правильно? – Matheno

ответ

1

Попробуйте это изменить:

$img = imagecreatetruecolor($new_w,$new_h); 
      imagecopyresized($img,$im,0,0,0,0,$new_w,$new_h,$width,$height); 

В это:

$img = imagecreatetruecolor($newwidth,$newheight); 
      imagecopyresized($img,$im,0,0,0,0,$newwidth,$newheight,$width,$height); 
2

Есть несколько ошибок в коде: 1) вы должны вернуть $ IMG, а не $ им ...

 imagejpeg($im); 
     imagedestroy($im); 

2) вы определили $ newwidth и $ newheight, но в следующем коде вы использовали $ new_w, $ new_h.

Правильный код:

$im = imagecreatefromstring($data); 
    if ($im !== false) { 
     header('Content-Type: image/jpeg'); 

     $percent = 0.5; 
     $width = imagesx($im); 
     $height = imagesy($im); 
     $newwidth = $width * $percent; 
     $newheight = $height * $percent; 

     $img = imagecreatetruecolor($newwidth,$newheight); 
     imagecopyresized($img,$im,0,0,0,0,$newwidth,$newheight,$width,$height); 

     imagejpeg($img); 
     imagedestroy($img); 
    } 
+0

очень полезно ... –

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