2016-05-11 4 views
1

Я пытаюсь изменить размер и изображения с помощью следующей функции:Отображение изображения после изменения размера

function resize_image($file, $w, $h, $crop=FALSE) { 
    list($width, $height) = getimagesize($file); 
    $r = $width/$height; 
    if ($crop) { 
     if ($width > $height) { 
      $width = ceil($width-($width*abs($r-$w/$h))); 
     } else { 
      $height = ceil($height-($height*abs($r-$w/$h))); 
     } 
     $newwidth = $w; 
     $newheight = $h; 
    } else { 
     if ($w/$h > $r) { 
      $newwidth = $h*$r; 
      $newheight = $h; 
     } else { 
      $newheight = $w/$r; 
      $newwidth = $w; 
     } 
    } 
    $src = imagecreatefromjpeg($file); 
    $dst = imagecreatetruecolor($newwidth, $newheight); 
    imagecopyresampled($dst, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 

    return $dst; 
} 

После создания функции, я пытаюсь отобразить изображение после изменения размера с помощью этого кода, но он не работает :

<?php 

    $img = resize_image('../images/avatar/demo.jpg', 120, 120); 

    var_dump($img); //The result is: resource(6, gd) 
?> 
    <img src="<?php echo $img;?>"/> 

PS: Там нет никаких проблем с включением функции

+0

Где инструкция используется для хранения изображений, или вы хотите, чтобы изменить его 'на лету'? Вы просто пытаетесь распечатать идентификатор ресурса изображения, ожидающий получить изображение, это не значит, что вы собираетесь работать ... Возможно, вам понадобится папка для хранения временных изображений, которые вы изменяете, и удалите их после завершения их функции. – asurbernardo

ответ

2

Вы не можете напрямую выводить изображение таким образом. Вы можете:

  1. Сохраните изображение на диск и введите URL-адрес в тег изображения.
  2. Буфер необработанных данных, base64 кодирует его и выводит его как URI данных (я бы не рекомендовал это, если вы работаете с большими изображениями).

Подход 1:

<?php 
$img = resize_image('../images/avatar/demo.jpg', 120, 120); 
imagejpeg($img, '../images/avatar/demo-resized.jpg'); 
?> 
<img src="<?= 'www.example.com/images/avatar/demo-resized.jpg' ?>"/> 

подход 2:

<?php 
$img = resize_image('../images/avatar/demo.jpg', 120, 120); 
ob_start(); 
imagejpeg($img); 
$output = base64_encode(ob_get_contents()); 
ob_end_clean(); 
?> 
<img src="data:image/jpeg;base64,<?= $output; ?>"/> 
Смежные вопросы