情弱エンジニアのなかのblog

一人前のエンジニアになる為のブログです

CakePHP 画像のサイズを決めて出力する

アップロードした画像を任意のサイズにして表示する

画像のアップロードが出来たらその画像を丁度いいサイズにして出したいでよね ということでやり方をアップします。

前提として「webroot」に「upimg」というフォルダを作っているものとします。

今回は私は記事一覧を表示するところで画像の表示を行いました。 なのでforeachの中だと考えてください。

まず画像のファイルパスを取得していきます。

$article_id = $article['Article']['id'];
$id = "/img/" . $article_id . ".jpg" ;

// コピー元画像の指定
$path = WWW_ROOT . "upimg/" . $article_id  . ".jpg";
//出力先のファイル
$file = WWW_ROOT . "img/" . $article_id  . ".jpg";

続いて画像サイズの取得や表示するサイズ設定をしていきます。

// ファイル名から、画像インスタンスを生成
$in = imagecreatefromjpeg($path);
//元画像サイズ取得
$size = GetImageSize($path);
$width = 200;
$height = 200;
//サイズを指定した背景画像を生成
$out = ImageCreateTrueColor($width, $height);
//サイズ変更・コピー
ImageCopyResampled($out, $in, 0, 0, 0, 0, $width, $height, $size[0], $size[1]);

最後に出力と不要なデータの削除を行います。

//画像保存
imagejpeg($out, $file ,100);
echo $this->Html->image($id, array('alt' => 'baz'));

ImageDestroy($in);
ImageDestroy($out);

これで画像のサイズを指定して出力することができます。

それでは