PHPで画像を扱えるようにする(インストール手順など)

PHP経由でGD使いたいなと思ったので。何も考えずにPHPインストールしてると、imagecreateとかのfunctionがないよと怒られるので、その辺のインストール周りから。必要なライブラリとかはマニュアルみたら載ってるので、困らないと思うけれど、自分メモもかねて貼っておく。

$ cd ~/download
$ wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz
$ cp ./jpegsrc.v6b.tar.gz /usr/local/src/
$ cd /usr/local/src/
$ tar zxvf ./jpegsrc.v6b.tar.gz
$ cd ./jpeg-6b
$ ./configure --enable-shared
$ make
$ sudo make install
$ cd ~/download
$ wget http://nchc.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.16.tar.gz
$ cp ./libpng-1.2.16.tar.gz /usr/local/src/
$ cd /usr/local/src/
$ tar zxvf ./libpng-1.2.16.tar.gz
$ cd ./libpng-1.2.16
$ ./configure --enable-shared
$ make
$ sudo make install
$ cd ~/download
$ wget http://download.savannah.gnu.org/releases/freetype/freetype-2.3.2.tar.gz
$ cp ./freetype-2.3.2.tar.gz /usr/local/src/
$ cd /usr/local/src/
$ tar zxvf ./freetype-2.3.2.tar.gz
$ cd ./freetype-2.3.2
$ ./configure --enable-shared
$ make
$ sudo make install

フォントは使うかわからないけれど、ついでなので入れた。
ライブラリのインストールが出来たところでPHPの再インストールなんだけれど、今回付けたconfigureオプションのせいか「/usr/bin/ld: cannot find -lltdl」とか怒られたので、先にlibltdlインストール。libmcryptなので、画像とは関係ないかもだけど。

  • libltdl
$ cd /usr/local/src/libmcrypt-2.5.7/libltdl/
$ ./configure --enable-ltdl-install
$ make
$ sudo make install



ということで、PHP再インストール。configureオプションが良い感じに増えてきた。

$ cd /usr/local/src/php-5.2.1
$ ./configure \
--prefix=/usr/local/php \
--with-apxs2=/usr/local/apache2/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-mcrypt \
--enable-roxen-zts \
--enable-zend-multibyte \
--enable-track-vars \
--enable-mbstring \
--enable-mbregex \
--with-zlib \
--with-gd \
--with-jpeg-dir=/usr/local \
--with-png-dir=/usr/local \
--with-freetype-dir=/usr/local \
--enable-gd-native-ttf
$ make
$ sudo make install



これまた画像とは関係ないけれど、ZendOptimizerがバージョンアップしてたので、ついでにインストール。

  • ZendOptimizer
$ cp ~/download/ZendOptimizer-3.2.6-linux-glibc21-i386.tar.gz /usr/local/src/
$ cd /usr/local/src/
$ tar zxvf ./ZendOptimizer-3.2.6-linux-glibc21-i386.tar.gz
$ cd ./ZendOptimizer-3.2.6-linux-glibc21-i386
$ sudo ./install-tty
yes
/usr/local/Zend
/usr/local/php/lib/
yes
/usr/local/apache2/bin/apachectl
no



これでマニュアルのimagecreate関数のページに書いてある以下のコードとかが動くようになる。

<?php
header("Content-type: image/png");
$im = @imagecreate(110, 20)
    or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($im, 0, 0, 0);
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5,  "A Simple Text String", $text_color);
imagepng($im);
imagedestroy($im);
?>

上のコードをそのままペタっと貼ると(←実際にimgタグのsrcは自宅サーバーに置いた上のコードにしてある)となる。
ということで、Gmail Signature Generatorみたいなのはすぐに作れる環境がめでたく出来ました。