ホームページ  >  記事  >  バックエンド開発  >  GIF と JPEG_PHP の両方をサポートするように PHP を構成する チュートリアル

GIF と JPEG_PHP の両方をサポートするように PHP を構成する チュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:07:03910ブラウズ

質問: Bluepoint Linux 2.0 をインストールした後、PHP でプログラミングを開始したところ、PHP は GIF 画像のみを処理でき、JPEG 画像は処理できないことがわかりました。後で知ったのですが、PHP は画像処理に GD ライブラリを使用しており、GD ライブラリは当初 GIF をサポートしていましたが、GIF は著作権問題のある LZW アルゴリズムを使用していたため、法的問題が発生するため、GD-1.6 から GD ライブラリはサポートされていませんでした。 GIF のサポートが廃止され、代わりに、より優れた著作権フリーの PNG がサポートされます。そして今度は、GIF、PNG、JPEG を同時にサポートしたいと考えています。試してみたところ、なんとかできました。以下に具体的な方法を紹介します。私の構成は、Blue Point Linux 2.0、Kernel-2.2.16、MySQL-3.23.10alpha、Apache-1.3.12、PHP4.0.1pl2、gd-1.8.3、Jpeg6bです。





下から上、つまりJpeg->GD->PHP->Apacheの順に紹介していきます。

0. 現在のステータスを確認します。
Bluepoint Linux 2.0 をインストールした後、カーネル、MySQL、および Apache は何も変更されていません。
info.php という名前の PHP ファイルを作成し、Apahce ドキュメント ディレクトリ (/etc/httpd/html) に配置します。その内容は次のとおりです。
。ブラウザでファイル URL を開きます (私のホスト名は zhangzh です):
http://zhangzh/info.php
Apache/PHP が正常に実行されている場合、ページには PHP バージョン、Apache バージョン、およびその他のさまざまな役立つ情報がリストされます。気になったのは、GDライブラリ部分がGIFとJPEGをサポートしているかどうかでしたが、GIFはサポートしているが、JPEGはサポートしていないことがわかりました。

1. Jpeg6bのインストールと設定
Jpegの主なファイルには、jpeglib.h、libjpeg.a、libjpeg.soなどが含まれます。まず、/usr/include ディレクトリに移動して jpeglib.h があるかどうかを確認し、/usr/lib ディレクトリに移動して libjpeg.a および libjpeg.so があるかどうかを確認します。私のシステムにはそれがないので、インストールする必要があります。
Jpeg ソース コードを取得するアドレスは次のとおりです。
ftp://ftp.uu.net/graphics/jpeg/
取得したファイルは jpegsrc.v6b.tar.gz で、/usr/src ディレクトリに配置されます。
/usr/src ディレクトリに移動し、インストールプロセスを開始します。
/usr/src と入力します:
cd /usr/src
圧縮ファイルを解凍します:
tar
このサブディレクトリに入ります:
cd jpeg-6b
このディレクトリ内の install.doc ファイルには、Jpeg のインストール方法が詳しく記載されています。指示に従ってください。
生成された Makefile ファイルを設定します:
./configure
コマンドが完了すると、ディレクトリに追加の Makefile ファイルが作成されます。 Makefile は、多くのソフトウェアのコンパイルとインストールのための構成およびプロセス制御ファイルです。これは非常に重要なので、その内容を理解する必要があります。
コンパイルを開始します:
make
コマンドが完了すると、ディレクトリにはさらに多くのファイルが存在します。重要なものは libjpeg.a と libjpeg.so です。
インストール:
make install
コマンドが完了すると、jpeglib.h が /usr/local/include ディレクトリにコピーされ、libjpeg.a と libjpeg.so が /usr/local/lib ディレクトリにコピーされます。

2. GD-1.8.3のインストールと設定
GDの主なファイルには、gd.h、libgd.aなどが含まれます。
GD ソース コードを取得するアドレスは次のとおりです。
http://www.boutell.com/gd/
取得したファイルは gd-1.8.3.tar.gz で、/usr/src ディレクトリに配置されます。
このバージョンの GD は GIF をサポートしていないことが知られていますが、よく考えてみると、GD が GIF と JPEG の両方をサポートすることを望んでいる私のような人はたくさんいるので、誰かが GIF のサポートを追加するパッチを作成しました。こちらはイギリス人男性のようで、メールアドレスはadam@elysium.ltd.ukです。
パッチのソース コードを入手するためのアドレスは次のとおりです:
http://www.webofsin.com/gd-1.8.3-gif.patch
取得したファイルは gd-1.8.3-gif.patch で、/ に配置されます。 usr/src ディレクトリがダウンしました。
/usr/srcと入力します:
cd /usr/src
圧縮ファイルを解凍します:
tar xzvf gd-1.8.3.tar.gz
コマンドが完了すると、追加のサブディレクトリgd-1.8.3が作成されます。 GD のソース コード ファイルはそこにあります。
ソース コードにパッチを適用します:
patch -p0 コマンドが完了すると、gd-1.8.3 サブディレクトリに追加の gd_gif.c ファイルが作成され、ファイル gd.h と Makefile もそれに応じて変更されます。
このサブディレクトリに入ります:
cd gd-1.8.3
デフォルトでは、GDライブラリはコンパイル時にJPEGサポートを含まないため、Makefileを変更する必要があります。
次のようにMakefileを変更します:
CFLAGS=-O -DHAVE_XPM -DHAVE_JPEG -DHAVE_LIBTTF
LIBS=-lm -lgd -lpng -lz -ljpeg -lttf -lXpm -lX11
その後、コンパイルしてインストールします:
make
make install
コマンドが完了すると、gd.h は /usr/local/include ディレクトリにコピーされ、libgd.a は /usr/local/lib ディレクトリにコピーされます。

3. PHP-4.0.1pl2のインストールと設定
PHPの主なファイルには、libphp4.a、libphp4.soなどが含まれます。
PHP ソースコードを取得するアドレスは次のとおりです。
http://php.net
取得したファイルは php-4.0.1pl2.tar.gz で、/usr/src ディレクトリに配置されます。
/usr/src ディレクトリに入り、ファイルを解凍します:
cd /usr/src
tar in。
このサブディレクトリに入ります:
cd php-4.0.1pl2
このディレクトリ内の INSTALL ファイルには、PHP のインストール方法が詳しく記載されています。指示に従ってください。
生成された Makefile を設定します:
./configure --with-apxs=/usr/sbin/apxs' --with-mysql'
'--with-config-file-path=/etc/httpd' - -enable-セーフモード'
'--with-jpeg-dir=/usr/local' --with-gd=/usr/local'
パラメータの最後の行に注意してください'--with-jpeg-dir=/usr /local' '--with -gd=/usr/local'は、JpegとGDのディレクトリが/usr/localであることを指定します。これは、手順1と2のmake installの結果に基づいて指定されます。
(コマンドが長すぎるため、シェルファイルとして記述して実行することをお勧めします。my-php-conf ファイルの内容は次のとおりです:
#! /bin/sh
./configure - -with-apxs=/usr/sbin/apxs' - -with-mysql'
'--with-config-file-path=/etc/httpd' '--enable-safe-mode'
'--with- system-regex' '--disable-debug' --with-zlib' --enable-magic-quotes' --enable-track-vars'
'--with-jpeg-dir=/usr/local' -- with-gd=/usr/local '
シェルで実行します:
sh my-php-conf
効果は同じです。)
コマンドが完了すると、ディレクトリに追加の Makefile ファイルが作成されます。
コンパイルとインストール:
make
make install
コマンドが完了すると、libphp4.so が /usr/lib/apache ディレクトリにコピーされます。

4. Apache の設定
Apache 自体を再コンパイルしてインストールする必要はありませんが、新しい PHP を使用する場合は、Apache 設定ファイルを変更して Apache サービスを再起動する必要があることを Apache に知らせる必要があります。
Apache 設定ファイル /etc/httpd/conf/httpd.conf を変更して、ファイルに次の行が含まれるようにします。
LoadModule php4_modulemodules/libphp4.so
AddModulemod_php4.c
AddTypeapplication/x-httpd-php.php3 .php
At同時に、古い php3 の対応する行を注意してコメントアウトしてください。そうしないと、競合が発生し、Apache の再起動に失敗します。
Apache サービスを再起動します:
/etc/rc.d/init.d/httpd restart

5. インスタンステスト
ステップ 0 の指示に従って、現在のステータスを確認します。新しいバージョン番号。GD ライブラリは GIF と JPEG の両方もサポートします。
しかし、それでもサンプルを使ってテストしたいと思います。このサンプルの機能は、gif ファイルを読み取り、サムネイルを生成し、それを別の jpg ファイルとして保存することです。ファイル create-thumb.php の内容は次のとおりです。
function CreateThumbnail($srcFile, $dstFile, $dstW, $dstH)
{
$data = GetImageSize($srcFile,&$info);
switch($ data[2]) {
case 1:
$im = @ImageCreateFromGIF($srcFile)
break 2:
$im = @ImageCreateFromJPEG($srcFile);
case 3:
$im = @ImageCreateFromPNG($srcFile);
}
$srcW=ImageSX($im)
if ($srcW = $dstW && $srcH <= $dstH )
ImageJPEG($im,$dstFile);
else
{
if(($srcW / $srcH) > ($dstW / $dstH))
$dstH = $dstW *$srcH / $srcW;
$dstW = $dstH *$srcW / $srcH;
$ni=ImageCreate($dstW,$dstH)
ImageCopyResize($ni,$im,0,0,0,0,$dstW,$dstH,$ srcW,$srcH);
ImageJPEG($ni,$dstFile);
}
}
CreateThumbnail("./test.gif", "./test-tn.jpg", 80, 80);
このファイルをApahceのドキュメントディレクトリ(/etc/httpd/html)に置き、テスト用の画像ファイルtest.gifもこのディレクトリに置き、ブラウザを使用してphpファイルを開きます(私のホスト名はzhangzhです) :
http://zhangzh/create-thumb.php
エラーメッセージはありません。 Apahce ドキュメント ディレクトリ (/etc/httpd/html) を見ると、追加のサムネイル ファイル test-tn.jpg があります。

仕事が終わり、担任が法廷に戻りました。






http://www.bkjia.com/PHPjc/315210.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/315210.html

技術記事質問: Bluepoint Linux 2.0 をインストールした後、PHP でプログラミングを開始したところ、PHP は GIF 画像のみを処理でき、JPEG 画像は処理できないことがわかりました。後で、PHP が画像の処理に GD ライブラリを使用していることを知りました。GD ライブラリは当初サポートされていました...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。