PHPで画像を編集するプログラムを作る際に利用するのがGDライブラリです。さらにPHPで作られた画像を扱う仕組みでは、GDライブラリが利用されています。
このようなPHPの標準で使えるGDライブラリですが、Linuxで使うにはパッケージの追加が必要です。またGDライブラリを使う際に知ってほしいことが幾つもあります。
そこで今回は、PHPで画像を編集するプログラムを作成する際に利用されるGDライブラリについて紹介します。
目次
PHPのGDライブラリとは何か
PHPといえば、主にWebサーバーで動作し、動的にHTMLを生成するために使われるプログラム言語です。そのため、文字列を扱うのが得意なプログラム言語と言えます。
しかし、PHPの用途はそれだけではありません。PHP用に作られたライブラリを活用すればいろいろなことができます。
今回紹介するGDはPHPで画像ファイルを扱うためのライブラリです。次からGDライブラりの概要について解説します。
GDグラフィックライブラリとは何か
今回紹介するGDグラフィックライブラリは、無償で利用できる画像データを操作するための関数を集めたライブラリです。PHPを含む多くのプログラム言語向けにインターフェースが用意されており、PHP4.3以降のバージョンではPHPの標準機能の一部として利用できます。
ただし、CentOSのyumコマンドやUbuntuのaptコマンドでPHPをインストールする場合、PHP本体だけではなくPHP用のGDライブラリを同時にインストールする必要があるので注意してください。
GDライブラリの機能
PHPからGDライブラリを利用することで、画像データを生成したり画像データを加工することができます。また、GDライブラリが扱えるのは、JPEG、PMG、GIF、BMP、WBMPなどで、Webページで使われているほとんどの画像データを処理できます。
ただし、画像データによってはテキストと比べるとかなり大きなサイズになってしまいます。そのためGDライブラリで画像データを扱う場合は大きなメモリを必要とします。
もしGDライブラリを活用したWebシステムを作成する場合、そのサーバーのメモリサイズに注意してください。
WordPressはGDライブラリを利用している
WordPressは、Webサイトの作成やブログ用などに広く使われているコンテンツ管理システムです。そしてWordPressに画像データをアップロードすると、自動的に縮小された画像が作成されます。
WordPressの縮小画像の生成に使われているのがGDライブラリです。
ほかにもPHPで作られたWebベースの監視システムでグラフを生成する場合、PHPのGDライブラリ、または、GDライブラリをベースにした利用するグラフ作成専用ライブラリなどを利用できます。さらに他にもいろいろな応用が可能です。
WordPressについてはこちらの記事もチェックしてください。
![WordPressのアイキャッチ画像とは?作成方法から設定方法まで解説!](https://webukatu.com/wordpress/wp-content/uploads/2020/09/WordPressのアイキャッチ画像とは?-作成方法から設定方法まで解説!-1.png)
PHPのGDライブラリを有効にするには
先ほどPHPの標準機能としてGDが利用できると紹介しましたが、PHPが使えるからと言ってGDがインストールされているとは限りません。
CentOSやUbuntuなどのディストリビューションでは、yumコマンドやaptコマンドでPHPをインストールできますが、PHPの実行ファイルとGDライブラリは別のパッケージです。
同時にインストールしないとGDライブラリは利用できません。次から、LinuxにおけるGDライブラリのインストール手順を紹介します。
PHPとGDライブラリとの関係
オープンソースのPHPは、自分の環境に合わせてソースファイルをコンパイルすれば誰でも利用できます。しかし誰もがコンパイルでPHPを作れる訳ではありません。そこでCentOSやUbuntuではコンパイル済のPHPを用意しています。
ただし、PHPの全ての機能が必要な方は少数です。しかも、使わない機能のためにディスク容量を使うのは効率的ではありません。この解決策としてPHPの機能を分割して提供し、利用したい機能のみを選んでインストールできる仕組みが運用されています。
今回紹介するGDライブラリもそのような分割された機能の1つです。そのため、GDライブラリを利用するには、PHP本体といっしょにGDライブラリのパッケージも同時にインストールしてください。
yumコマンドでインストールするには
CentOSなどのRed Hat Enterprise Linuxを基にしているLinuxディストリビューションでは、パッケージ管理にyumまたはdnfコマンドを使います。
なお、最小構成のCentOSにはPHPがインストールされていないので、yumまたはdnfコマンドでインストールしなければなりません。
yumコマンドでどんなPHPのパッケージをインストールできるかは、次のコマンドでチェックできます。
# yum list php-*
ただし、PHPはかなりの数のパッケージから構成されているので、このリストの中からGDライブラリを探すのは大変かもしれません。次のように、GDライブラリのみ抽出してみてください。インストール可能なPHPのGDライブラリが表示されます。
# yum list php-* | grep gd
php-gd.x86_64
このパッケージをyumコマンドを利用してインストールしてください。
# yum instal php-gd.x86_64
aptコマンドでインストールするには
LinuxでもUbuntuなどのDebianをベースにしたディストリビューションでは、パッケージのインストールにaptコマンドまたはapt-getコマンドを利用します。
そして先ほど紹介したのと同じようにインストール可能なphpのパッケージを確認し、そのパッケージの中からインストールしたいパッケージを選択します。
aptコマンドを使ったGDライブラリの検索例
$ sudo apt list php-* | grep gd
php-gd/groovy,groovy 2:7.4+76 all
aptコマンドでGDライブラリをインストールするには、apt installを使います。
$ sudo apt install php-gd
GDライブラリで何ができるのか
先ほど紹介したようにGDライブラリを利用することで、PHPのプログラムから画像データの作成や編集が可能です。さらに、WordPressのようなPHPで作られて画像を扱うシステムでもGDライブラリを必要とします。
では、GDライブラリを利用することで具体的にどんなことができるのでしょうか。次からPHPにGDライブラリを組み込む方法を紹介します。
画像のサイズ変更
先ほど紹介したように企業のWebサイト作成や個人のブログ作成に利用されるWordPressは、GDライブラリを活用しています。具体的には、WordPressで画像データをアップロードすると、自動的にサムネイル用の小さなサイズの画像データを作成します。
また、画像データを多く扱うサイトでは、小さい画像を利用したリスト一覧のページと、大きな画像を利用した詳細ページを用意するケースがよくあります。このような場合も、GDライブラリを利用すれば小さい画像を簡単に準備することができます。
このようにGDライブラリの画像を縮小する機能はWebページと相性が良いので、画像データを扱うWebサイトでよく利用されます。
定期的にグラフを作成する
最近はWiFiなどでインターネットに接続し、定期的に測定値を送信できるIoTデバイスが広く活用されています。そしてPHPとGDライブラリを利用することで、そのような測定値から送られたデータからグラフに生成するWebシステムが作成できます。
なお、GDライブラリの関数を組み合わせてゼロから作ることも可能ですが、グラフ作成によく利用される機能がPEARとして提供されています。もしゼロからグラフを作るなら、ぜひPEARの機能を利用してください。
GDライブラリを活用した有償ライブラリ
ビジネス向けのWebサービスでは、データベースに格納した数字を使ってグラフを作り、それをWebページに表示しています。しかし、そのようなサービスを短期間でゼロから作るのは面倒です。
そのような方のために、簡単に扱えて、しかも見やすいビジネス向けのグラフが作れる有償のライブラリが販売されています。もし、短期間で質の高いWebサイトを構築する場合は、このような有償のライブラリの利用も検討してください。
PHPとGDライブラリを利用した有償のグラフ生成ライブラリの例
高性能なグラフ生成ライブラリ JpGraph
まとめ
今回紹介したようにPHPのGDライブラリを利用することで、PHPのプログラムの中でサイズを縮小した画像を生成したり、便利なグラフを作ったりできます。ただし、そのためにはあらかじめPHPにGDライブラリを組み込む必要があるので注意してください。
また、GDライブラリはWordPressでも使われているPHPに無くてなならない機能です。その設定方法を理解し、PHPを用いたWebシステムでうまく活用してください。
![【PHP】ファイルに書き込む方法を解説](https://webukatu.com/wordpress/wp-content/uploads/2021/02/Androidアプリの-プログラミングはどの言語で学習するのが良いか4.png)