icon
Let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

【CSSのほうが早いww】PHP・GD機能で、リンクとかの文字入りバナー画像を作成してみる

更新: 2025/10/05 1825文字

今回はクライアントワークとかではないですけど、PHP・GD機能を使って、リンクとかに使えるバナーを作成してみたので、その方法をまとめてみました。webのフロントコーディングやってた人にとってはCSSのほうが早い気がするので微妙ですが(笑)、こんなこともできるんだー、くらいに押さえていただければokです。さっそくコードや出力例を確認していきましょう。

PHP・GDについて&確認や有効化方法

画像ファイル生成や操作ができるライブラリ

PHPマニュアルにもあるとおり、PHPでもGD グラフィック ライブラリを使うことができます。PHP 4.3 以降のバージョンではデフォルトの拡張機能となっているらしいです。

フロント面だけだったら、画像ソフトで作った画像とか、CSSで良いかもしれませんが、『生成画像に文字列わたして~』『アップロードファイルの縮小版をサムネとして生成して~』のようなケースでは活躍するかもしれません

PHP・GD確認や有効化方法

一番かんたんなのは『phpinfo()』を実行してGDの状態を確認することです。 使える状態であれば『enable』になっています。

上記のほか(配列で返ってくるので)『var_dump(gd_info())』をつかって、『JPEG Supportがtrueか?』『PNG Supportがtrueか?』などを確認することもできます。

次にレンタルサーバーよっては使わないかもしれませんが、GD有効化方法です。 管理人は今回XAMPPでおこないました。php.iniファイルで『extension=gd』を探してきて、コメントアウトを消して有効化しました。有効化されてない場合はこんな感じで設定します。

PHP・GD機能で、リンクとかのバナー画像を作成するコード

コードはこんな感じになりました。フロントの画像出力したい部分のimgタグでこのファイルを実行します。中身はコンストラクタといくつかメソッドで、ファイル実行と同時にnew buttonGenerateClassして、内部メソッド実行します。

__construct()では色や縦横の定義して、imagefilledrectangle(GDの矩形塗りつぶし関数)でベースの部分作成

drawBorder()はimagerectangle(GDの矩形関数・塗りつぶさない)で少し小さいボックスを作ってボーダーに

drawText()はimagestringで文字列を入れますが、日本語の文字に対応していないとのことです。昔PHP検定テキストで読んだ内容だと、imagettftext()を使うことになりそうです。

最後にoutput内のimagepng(GDのpng作成関数)で出力して、imagedestroyでリソース開放してやる、という流れです。

実行例

では、さっそく上記のスクリプトを実行してみます。imgタグのsrcにスクリプトのパスを設定。リンクにしたいときはアンカータグでくくってやります。

こんな感じで、バナー画像が生成されてきました(上記のスクショ画像では判定できませんが、2番目はクリックでリンク先に飛ぶようになっています)。

あとがき・まとめ

  • PHP・GD機能で文字列を入れたバナーを作成することができる
  • imagefilledrectangle(GDの矩形塗りつぶし関数)→imagerectangle(GDの矩形関数・塗りつぶさないでボーダー)→imagestring(文字列)のような流れ
  • 出力後はリソース開放にimagedestroyするとベター

まとめると、こんなところでしょうか。単純なバナーはCSSのほうが早いけど、工夫すれば文字列を受け取ってそれをバナーに、みたいなのもできそうです(エスケープ処理とかはひつようですが)。


【カテゴリ】- PHP
【タグ】- ,

関連記事