2016-05-11 5 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; ?>"/> 
関連する問題