【PHP】画像をリサイズして生成したサムネイルをブラウザに表示させる方法

あるURLに実寸サイズの画像URLとリサイズしたい幅をGETパラメータで渡すだけでサムネイル的画像が返ってくる!みたいなことをやりたくて作ってみましたので、今日はその方法を紹介出来ればと思います。

プログラミングやWordPressを習得するのに一番近道な方法とは?

まずはGDが使えるか確認

GDとはPHPでpng,jpeg,gifなどの画像を色々と操作出来るPHP5.2以上からデフォルトの拡張機能になっているライブラリです。
今回はこのGDを使うのでまずは自分の環境でGDが使えるか確認しましょう。

確認方法はecho phpinfo();などでPHPの設定情報を画面に表示させちゃうと楽です。
gd項目のGD Supportがenableになっていれば大丈夫です。

GD確認

もしdisableになっている場合は、「php.ini」を開いて「extension=php_gd2.dll」を検索してください。

と先頭にセミコロンがあればコメントアウトされていますので、これを削除しましょう。

「php.ini」を保存してApacheなどのWEBサーバを再起動すれば使えるようになります。

 
もしgdの項目自体無い場合はインストールしなくてはいけませんので、

の記事などを参考にして頂けると助かります。

 

コードを書いてきます

やりたいことを再確認すると「あるURLに実寸サイズの画像URLとリサイズしたい幅をGETパラメータで渡すだけでサムネイル的画像が返ってくる!」

ですので、呼び出す側のHTMLはこんな感じ。


 
そしてこちらが本題のPHP側のコードです。


 

このコードが対応していること

問題点

このままブラウザに表示させるとimgタグにwidthとheightが入っていないのでブラウザ表示に少し時間がかかってしまいます。
ですのであらかじめDBなどにリサイズした際の横幅と縦幅の値をあらかじめ入れておくなどが必要になってくるかなと思います。

 

圧縮比率を高めたい時

圧縮比率を高めたいと思った時は最後にブラウザに表示させる時に使用するImagexxx関数の引数を増やせばOKです。
具体的に書いていくと、

JPEGの場合

3つ目の引数に品質があります。
0〜100まで設定できデフォルトでは75に設定されていますが、これを小さくしていくと圧縮比率を高めることが出来ます。

このようにすればOK。
詳しくはマニュアルを参考にしてください。

 

PNGの場合

これにも3つ目の引数に品質があります。
0〜9まで設定できデフォルト…すみません、分からなかったですがこちらは9に近いほうが圧縮比率が高いです。
JPEGと反対なので注意してください。

このようにすればOK。
詳しくはこちらもマニュアルを参考にしてください。

 

GIFの場合

すみません、GIFの場合はimagegif関数に品質などの引数がなかったので良く分からなかったです。
まあgifは圧縮など必要ないですかね。

 

まとめ

簡素ではありますが一応自分のやりたかったことは出来ました。
このコードを使用する場合はあくまで自己責任でお願いしますね汗
画像系は色々なライブラリがあるようなので自分に合ったものを探してみても面白いと思います。
私は画像系はあんまり触ったことが無かったのでだいぶ勉強になって楽しかったです^^

 

参考にさせていただいたサイト

皆さまありがとうございました!

もし良かったらフォローとか購読して頂けると嬉しいです!╭( ・ㅂ・)و ̑̑ グッ !

follow us in feedly

コメントを送る

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください