スライドショー

PHPで画像をリサイズしよう!表示・保存方法もわかる

こんにちは!独学プログラマー&ライターのつぶらやです。

PHPで開発をしていると、画像を取り扱う時もあるでしょう。

そんな時に、渡された画像のサイズのが画面に合わないなどという事もあるかと思います。

もしくはアップロードした画像をリサイズして出力する必要もあるかもしれません。

本日はそんな時に使える、PHPでの画像リサイズについて以下の内容でお話しようと思います。

【解説】PHPのGDについて
【基本編】GDでリサイズする方法
【番外編】Imagickでリサイズする方法

PHPで画像のお悩みをお持ちの方も是非読んでください。

【解説】PHPのGDについて

PHPにはGD(GDライブラリ)というものがあります。

これを使用する事によってPHPで画像処理を行う事ができます。

GDに出来ること

今回サンプルコードで使用する関数と、役割を書きます。

getimagesize・・・画像のサイズの取得

imagecopyresampled・・・コピーと伸縮

imagejpeg(※「image」の後は出力する画像形式によって変化)・・・画像の出力

他のGDの関数も知りたい場合は、公式を参考にしてください。

http://php.net/manual/ja/book.image.php

対応している画像形式

以下のような拡張子の画像形式に対応しています。

.png
.gif
.jpeg(.jpg)
.xbm
.bmp

前章で書きましたが、扱う画像の拡張子によって使用する関数が変わる場合があるので注意です。

imagejpegはjpegを出力する関数ですが、gifの場合はimagegifとなります。

【基本編】GD関数でリサイズする方法

それでは、GD関数で画像をリサイズして出力してみましょう。

今回は、実行するphpGd.phpファイルを置いたフォルダ内にtest.jpgがある事を前提とします。

phpGd.php
<?php
    list($width, $hight) = getimagesize('test.jpg'); // 元の画像名を指定してサイズを取得
    $baseImage = imagecreatefromjpeg('test.jpg'); // 元の画像から新しい画像を作る準備
    $image = imagecreatetruecolor(100, 100); // サイズを指定して新しい画像のキャンバスを作成
    
    // 画像のコピーと伸縮
    imagecopyresampled($image, $baseImage, 0, 0, 0, 0, 100, 100, $width, $hight);
    
    // コピーした画像を出力する
    imagejpeg($image , 'new.jpg');
?>
結果
new.jpgが、test.jpgと同じ階層に出力

流れとしては以下です。


getimagesizeimagecreatefromjpegimagecreatetruecolorで画像を作る準備をします。
imagecopyresampledで画像のコピーとリサイズをします。
imagejpegで出力します。

因みにtest.jpg等、ファイル名を記載している部分はパス名を記載できます。

好きな場所に出力したり、好きな場所の画像をコピーする事ができます。

GDの使用方法についてご理解頂けましたでしょうか。

では、続いて次章ではGD以外のリサイズ方法を紹介します。

【番外編】Imagickでリサイズする方法

最後に、GD以外のリサイズ方法としてImagickを使用する方法をご紹介します。

ImagickはPHPの拡張モジュールです。

ImageMagickをPHPで使用するためのものなので、ImageMagickとImagickは別物です。

使用方法としては、phpinfo()を確認してimagickの項目があれば使用できます。

なければインストールをする必要があります。

以下のようなコードを書くことでリサイズができます。

<?php

$image = new Imagick("test.jpg"); // コピー元の呼び出し
$image->thumbnailImage(100, 0); // リサイズ
$image->writeImage("new.jpg"); // 書き出し

$image->clear(); // 呼び出した画像情報を消す
?>

対応している画像形式も出来ることもGDより多いのですが、画像をリサイズするだけの場合はGDで十分かと思います。

高度に画像を加工したい場合が将来発生するかもしれませんので、Imagickというキーワードも覚えておいてください。

まとめ

本日はPHPの画像のリサイズについてお話しました。

関わる案件によっては、画像について色々な要望が出てくる事もあると思います。

その時、どういう方法があるかを知っておくことが大切です。

GDだけではなく、Imagickも記憶の片隅に持っておいてください。

それでは、また。

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

つぶらや

つぶらや

独学PG&SE、東京在住30代女性。
誰でもプログラマーになれるがモットーで、わかりやすい記事を目指しています。