PHP で大きな画像を小さな画像に自動縮小する (および GD ライブラリのインストール)
UB 2001.10.11
ネットワーク プログラミングと通常のプログラミングの最大の違いは、通常のプログラミングの特性に加えて、ネットワーク プログラミングには次のような特徴があることだと思います。多くの場合、スピードを重視します。
Web サイトには大量の写真が必要です。現在、ユーザーが写真をアップロードして、自動的に小さな写真を表示できる「フォト アルバム」プログラムがたくさんあります。 1 ページに写真を掲載し、小さい画像をクリックすると大きな画像が表示されます。
注: Web ページ上に画像を表示するために長さと幅を指定すると、画像は小さいサイズでしか表示されませんが、サイズ (容量) は変更されず (プロパティで確認できます)、当然速度は非常に遅くなります。本当のサムネイルとは、大きな画像のサイズ(容量)を縮小する、つまり小さなサイズの画像ファイルを再生成するものです。私のプログラムの 1 つにこの機能があり、現在テスト中です: www1.yn.cninfo.net/love
さらに、GD ライブラリをインストールすると、このプログラムを使用して画像を描画したり、特別なカウンターを作成したりすることができます。など、FREETYPEフォントもサポートできるなど、機能が豊富で非常に強力です。
まず、GIF、JPG、PNG、BMP 画像の違いについて簡単に説明します。これらはすべてグラフィック圧縮形式です。 GIF 形式の 1 つの画像は最大 256 色を表示でき、複数の画像を保存でき、小規模なアニメーションの作成に適しており、大容量です。 JPEG 形式は 24 ビット (1,600 万) 色をサポートし、静止画像に適しており、容量が小さいです。 PNG 形式には GIF と JPEG のすべての機能が含まれており、48 ビット カラーをサポートしていますが、容量が大きいため、あまり使用されていません。 BMP 形式、色数が少ない、非常に古い圧縮形式、Web には大きすぎます。
PHP で大きな画像を自動的に小さな画像に縮小するのは実際には GD ライブラリをインストールして小さな関数を使用するだけで非常に簡単ですが、GD ライブラリのインストールは非常に面倒です。バージョン 1.6.2 より前の GD ライブラリには GIF 形式をサポートする機能がありましたが、GIF 形式で使用されている LZW アルゴリズムには Unisys の特許権が含まれているため、GD ライブラリ バージョン 1.6.2 以降は GIF 形式をサポートしません。
PHP はバージョン 3.0.13 以降で PNG グラフィック形式をサポートします。さらに、このバージョンの PHP 以降では、インストールおよびコンパイル時に GD ライブラリが古い GIF 形式をサポートしているかどうかがチェックされます。新しい PNG 形式を使用して、GIF または PNG 専用の機能を使用するかどうかを決定します。
1. GD ライブラリをインストールします。
1.環境:windows2000server+PHP4.0.4+GD+IIS
PHP4.0以降には簡単にインストールできます。インストール後、php4/extensionsディレクトリにダイナミックリンクライブラリphp_gd.dllが付属します。 php.ini の「extension=php_gd.dll」の前の「;」を削除して、WEBSERVER (IIS または APACHE) を再起動するだけで問題ありません。 phpinfo();?> で PHP プログラムを実行します。次の内容が含まれている場合は、使用できることを意味します:
gd
GD サポートが有効
GD バージョン 1.6.2 以降
FreeType サポートが有効
TTF ライブラリとの FreeType 連携
JPG サポートが有効化
PNG サポートが有効化
WBMP サポートが有効化
さらに、オンラインでダウンロードできる php_gd_gif.dll があり、名前を php_gd.dll に変更して元のファイルを上書きし、IIS を再起動すると、 GIFライブラリGDライブラリを実装します。
http://php.weblogs.com/php_gd にアクセスして php_gd_404.zip をダウンロードし、解凍して上記の操作を完了します。
これは PHP4.0.4 用です。他のバージョンの PHP は使用できません (PHP4.0.0 をお持ちの場合は、php_gd_gif.zip をダウンロードできます)。
はは、これが完了すると、phpinfo() には追加の GIF サポートが有効になっていることが表示されますが、著作権の問題に関しては、自分で解決できます。
LINUX に GD ライブラリをインストールするのはさらに面倒です。APACHE と PHP のインストールについて簡単に説明します。Apache 環境に PHP をインストールする場合、静的モジュール、動的モジュール (DSO) の 3 つのインストール モードから選択できます。そしてCGI。
静的モジュールは一般的に使用されます。つまり、APACHE と PHP は一緒にコンパイルされるため、PHP の実行効率が高くなります。ただし、PHP をアップグレードする必要がある場合や、GD ライブラリなどの追加ライブラリをインストールする場合は、両方を再コンパイルする必要があります。とても面倒です。動的モジュールの処理は、PHP を個別に再コンパイルするだけで簡単になります。PHP の INSTALL ファイルを確認してください。長い時間をかけて無事インストールできた静的モジュール+JPEG+PNGの体験談を紹介します:
2. 環境: LINUX6.1+PHP4.0.6+GD1.8.4+jpeg+png+zlib+APACHE_1 .3.20+MYSQL
1 ) 必要なライブラリをダウンロードします:
GD ライブラリをダウンロードします: バージョン 1.8.4 (安定版) を使用することをお勧めします。 gd-2.0.1 (BETA) をコンパイルすると失敗しました。
http://www.boutell.com/gd/
zlibをダウンロード:
http://www.info-zip.org/pub/infozip/zlib/
libpngをダウンロード: libpng-1.0を使用することをお勧めします.6- 1-src.tar.gz
http://www.turbolinux.com.cn/pub/mirrors/sourceware/cygwin/contrib/libpng/
jpegsrc.v6b.tar.gzをダウンロード:
http:/ /www.turbolinux.com.cn/pub/mirrors/gnu/ghostscript/
次の手順を順番に実行する必要があります:
2) LINUX6.1 を使用しており、カーネルは 2.2.12 です。 ROOT として入力し、すべてのパッケージを解凍し、tar -zxvf ファイル名を指定します。次にコンパイルします:
3) LINUX に zlib がインストールされていない場合は、まず zilb をインストールし、zlib-1.1.3 を入力して実行する必要があります:
./configure
make
make install
4) libpng-1.0.6 を入力します。 LINUX で行うこともできます。または、DOS にインストールするには、LINUX でメイクファイルをコピーし、次を実行する必要があります:
cp scripts/makefile.linux makefile
make
make install
5) jpeg-6b と入力して、次を実行します:
./configure
作る
make install
6a) gd-1.8.4 を入力
Makefile を変更
GD ライブラリのコンパイル時に JPEG サポートが追加されているかどうかを確認するには、Makefile を変更する必要があります。
次のように Makefile を変更します:
CFLAGS=-O -DHAVE_LIBPNG -DHAVE_LIBJPEG
LIBS=-lgd -lpng -lz -lm -ljpeg
または、FREETYPE、XPM、TTF およびその他のライブラリをインストールしている場合は、(インストール方法同様です)、ライブラリを自分で見つけます)、以下を変更するだけです:
#CFLAGS=-O -DHAVE_LIBXPM -DHAVE_LIBPNG -DHAVE_LIBJPEG
#-DHAVE_LIBFREETYPE -DHAVE_LIBTTF
#LIBS=-lgd -lpng -lz -ljpeg -lfreetype -lm -lttf
#
を削除した後、コンパイルしてインストールします:
make
make install
(MYSQL が必要でまだインストールしていない場合は、まず MYSQL をインストールし、解凍して、 ./configure ; make ; make を実行します。 install
./configure -- prefix=/home/mysql、デフォルトのインストール パスは /usr/local/share/mysql です。)
7) PHP を再コンパイルします。PHP-4.0.6 を使用します。最初にインストール ファイル、さらに INSTALL、そして実行:
7.1) 解凍して apache_1.3.20 を入力します。最初にいくつかのファイルを確認する必要があります:
./configure --prefix=/home/apache
--activate-module =src/modules/php4/libphp4.a
7.2) 解凍して php-4.0.6 を入力し、コンパイルしてインストールします:
./configure --with-mysql --with-apache=../apache_1.3.20
-- with-gd=../gd-1.8.4 --with -jpeg-dir=../jpeg-6b --with-png-dir=../libpng-1.0.6
--with-zlib -- Enable-track-var
(デフォルトのインストール パス: /usr/local /lib/php)
8) PHP が静的モジュールの APACHE でコンパイルされている場合は、APACHE を再コンパイルする必要があります。私は apache_1.3.20 を使用しています
APACHE を停止します。最初: ./home/apache/bin/ apachectl stop
apache_1.3.20 を入力し、ファイル src/Configuration:
Add: AddModule modules/php4/libphp4.a を変更する必要があります
[これは APACHE_1.3 のインストールです。 x、APACHE_1.2.x を使用している場合は、モジュール php4_module mod_php4.o を追加します。次に、libphp4.module を src にコピーし、対応するステートメントを -lphp4 -lgdbm -ldb -L/usr/ に変更します。 local/mysql/lib -lmysqlclient
動的モジュールインストールを使用する場合、初めてのインストールの場合、変更ステートメントが異なりますので、詳細はPHPのINSATLLファイルを確認してください。 ]
次に、次を実行します:
./configure --prefix=/home/apache (prefix= はストレージ パスを指定します。プレフィックスなしの場合、デフォルトは /usr/local/apache です)
(./configure を直接実行することもできます。 ) -prefix=/home/apache
--activate-module=src/modules/php4/libphp4.a )
make
make install
9) php-4.0.6と入力して
cp php.ini-dist /を実行usr/local/lib/php.ini
10) APACHE を起動します: ./home/apache/bin/apachectl start
11) phpinfo() プログラムを実行します。APACHE のデフォルトのルート ディレクトリは /usr/local/apache です。 /htdocs/。上記の WINDOWS に表示されているものと同じであれば、インストールは成功しており、PHP+GD+JPEG+PNG をサポートできます。それでも問題が解決しない場合は、再インストールしてみてください。
さらに、gd-1.8.3 には GIF パッチがありますが、成功した場合は LINUX の非常に低いバージョンが必要になるようです。 ? PHP+GD+GIF の実装方法を教えてください (E_mail:UBs@ynmail.com)
GIF グラフィックを使用したい場合は、上記の手順 6a を 6b に置き換えてください
gd-1.8.3 を使用してください。 、コンパイルする GIF パッチを追加し、GD ライブラリに GIF ライブラリが含まれるようにします:
6b) ダウンロード: http://www.boutell.com/gd/http/gd-1.8.3.tar.gz
パッチをダウンロード: http:// www.webofsin.com/gd-1.8 .3-gif.patch
ロックを解除し、「gd-1.8.3」と入力します
パッチGIF: patch -p0
次に、このディレクトリにさらにファイルを追加します。 gd-1.8.3/gd_gif.c
を作成し、基本的に上記と同じように Makefile を変更しました。
その後、コンパイルしてインストールします。
他の手順は上記と同じですが、gd-1.8.4 を gd-1.8.3 に置き換えるだけです。
2 番目、PHP での大規模な画像縮小のプログラム例: (WINDOWS と LINUX の両方のプラットフォームでデバッグおよび渡されます。)
1) 画像ページのアップロード: (フラグメント)