ホームページ バックエンド開発 PHPチュートリアル 配置PHP使之能同时支持GIF和JPEG_PHP

配置PHP使之能同时支持GIF和JPEG_PHP

Jun 01, 2016 pm 12:35 PM
gd gif 注文 インストール サポート 書類 目次 構成

问题:安装蓝点Linux 2.0后,进行PHP编程,发现只能处理GIF图像,不能处理JPEG图像。后来知道PHP处理图像,使用了GD库,而GD库开始时是支持GIF的,但由于GIF使用了有版权争议的LZW算法,会引起法律问题,于是从GD-1.6开始,GD库不再支持GIF,改为支持更好的,无版权争议的PNG。而我现在希望同时支持GIF,PNG和JPEG。

经过尝试,我成功地做到了这一点。下面介绍具体做法。我的配置为:蓝点Linux 2.0,Kernel-2.2.16,MySQL-3.23.10alpha,Apache-1.3.12, PHP-4.0.1pl2,gd-1.8.3,Jpeg6b。

我将按照由底向上的顺序介绍,即Jpeg->GD->PHP->Apache。

0、 当前状态查看
安装蓝点Linux 2.0后,Kernel,MySQL,Apache未做任何改变,看看当前状态如何。
创建一PHP文件,名为info.php,放于Apahce的文档目录下(/etc/httpd/html),其内容如下:
phpinfo(); ?>
文件就只有1行。用浏览器打开该文件URL(我的hostname为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 xzvf jpegsrc.v6b.tar.gz
命令完成后多了一个子目录jpeg-6b,Jpeg的源码文件就在其中。
进入该子目录:
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的支持加回去了。看起来这是个英国人吧,他的Email地址为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 xzvf php-4.0.1pl2.tar.gz
命令完成后多了一个子目录php-4.0.1pl2,PHP的源码文件就在其中。
进入该子目录:
cd php-4.0.1pl2
该目录中的INSTALL文件详细介绍了如何安装PHP,照章行事即可。
配置生成Makefile文件:
./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'
注意最后一行参数'--with-jpeg-dir=/usr/local' '--with-gd=/usr/local',指明了Jpeg和GD的目录为/usr/local,这是根据步骤1、2中make install的结果而指定的。
(由于命令太长,建议写成shell文件再执行。文件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'
用shell执行之:
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_module        modules/libphp4.so
AddModule mod_php4.c
AddType application/x-httpd-php .php3 .php
同时注意把旧的php3的相应行注释掉,否则会出现冲突而使Apache重启失败。
重启Apache服务:
/etc/rc.d/init.d/httpd restart

5、 实例测试
再次按步骤0的说明检查当前状态,我已经看到,PHP改成了新的版本号,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;
    case 2:
        $im = @ImageCreateFromJPEG($srcFile);
        break;
    case 3:
        $im = @ImageCreateFromPNG($srcFile);
        break;
  }
  $srcW=ImageSX($im);
  $srcH=ImageSY($im);
  if ($srcW     ImageJPEG($im,$dstFile);
  else
  {
    if(($srcW / $srcH) > ($dstW / $dstH))
          $dstH = $dstW * $srcH / $srcW;
    else
          $dstW = $dstH * $srcW / $srcH;
    $ni=ImageCreate($dstW,$dstH);
    ImageCopyResized($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文件(我的hostname为zhangzh):
http://zhangzh/create-thumb.php
没出错信息。再看Apahce的文档目录(/etc/httpd/html),多了一个缩图文件test-tn.jpg。

大功告成,班师回朝。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

0x80004005 エラー コードが表示された場合の対処方法 エディターは、0x80004005 エラー コードを解決する方法を説明します。 0x80004005 エラー コードが表示された場合の対処方法 エディターは、0x80004005 エラー コードを解決する方法を説明します。 Mar 21, 2024 pm 09:17 PM

パソコン上のフォルダーを削除または解凍するときに、「エラー 0x80004005: 不明なエラー」というダイアログ ボックスが表示されることがあります。この状況はどう解決すればよいでしょうか?エラー コード 0x80004005 が表示される理由は実際にはたくさんありますが、そのほとんどはウイルスによって引き起こされます。DLL を再登録して問題を解決できます。以下では、エディターがエラー コード 0x80004005 の処理体験を説明します。 。一部のユーザーは、コンピュータの使用時にエラー コード 0X80004005 を表示されます。0x80004005 エラーは主に、コンピュータが特定のダイナミック リンク ライブラリ ファイルを正しく登録していないこと、またはファイアウォールがコンピュータとインターネット間の HTTPS 接続を許可していないことが原因で発生します。それでどうですか

Linux Bashrc の機能、構成、使用法を理解する Linux Bashrc の機能、構成、使用法を理解する Mar 20, 2024 pm 03:30 PM

Linux Bashrc について: 機能、構成、および使用法 Linux システムでは、Bashrc (BourneAgainShellrunco​​mmands) は非常に重要な構成ファイルであり、システムの起動時に自動的に実行されるさまざまなコマンドと設定が含まれています。 Bashrc ファイルは通常、ユーザーのホーム ディレクトリにある隠しファイルであり、その機能はユーザーの Bashshell 環境をカスタマイズすることです。 1. Bashrc関数の設定環境

Ubuntu 24.04 に Podman をインストールする方法 Ubuntu 24.04 に Podman をインストールする方法 Mar 22, 2024 am 11:26 AM

Docker を使用したことがある場合は、デーモン、コンテナー、およびそれらの機能を理解する必要があります。デーモンは、コンテナがシステムですでに使用されているときにバックグラウンドで実行されるサービスです。 Podman は、Docker などのデーモンに依存せずにコンテナーを管理および作成するための無料の管理ツールです。したがって、長期的なバックエンド サービスを必要とせずにコンテナーを管理できるという利点があります。さらに、Podman を使用するにはルートレベルの権限は必要ありません。このガイドでは、Ubuntu24 に Podman をインストールする方法について詳しく説明します。システムを更新するには、まずシステムを更新し、Ubuntu24 のターミナル シェルを開く必要があります。インストールプロセスとアップグレードプロセスの両方で、コマンドラインを使用する必要があります。シンプルな

Ubuntu 24.04 に Ubuntu Notes アプリをインストールして実行する方法 Ubuntu 24.04 に Ubuntu Notes アプリをインストールして実行する方法 Mar 22, 2024 pm 04:40 PM

高校で勉強しているときに、同じクラスの他の生徒よりも多くのメモを取る、非常に明確で正確なメモを取る生徒もいます。メモをとることが趣味である人もいますが、重要なことについての小さな情報をすぐに忘れてしまうため、メモをとることが必需品である人もいます。 Microsoft の NTFS アプリケーションは、通常の講義以外にも重要なメモを保存したい学生にとって特に役立ちます。この記事では、Ubuntu24へのUbuntuアプリケーションのインストールについて説明します。 Ubuntu システムの更新 Ubuntu インストーラーをインストールする前に、Ubuntu24 では、新しく構成されたシステムが更新されていることを確認する必要があります。 Ubuntu システムでは最も有名な「a」を使用できます

Win7 コンピューターに Go 言語をインストールする詳細な手順 Win7 コンピューターに Go 言語をインストールする詳細な手順 Mar 27, 2024 pm 02:00 PM

Win7 コンピュータに Go 言語をインストールする詳細な手順 Go (Golang とも呼ばれます) は、Google によって開発されたオープン ソース プログラミング言語です。シンプルで効率的で、優れた同時実行パフォーマンスを備えています。クラウド サービス、ネットワーク アプリケーション、およびアプリケーションの開発に適しています。バックエンド システムです。 Win7 コンピューターに Go 言語をインストールすると、その言語をすぐに使い始めて、Go プログラムの作成を開始できるようになります。以下では、Win7 コンピューターに Go 言語をインストールする手順を詳しく紹介し、具体的なコード例を添付します。ステップ 1: Go 言語インストール パッケージをダウンロードし、Go 公式 Web サイトにアクセスします。

Win7システムにGo言語をインストールするにはどうすればよいですか? Win7システムにGo言語をインストールするにはどうすればよいですか? Mar 27, 2024 pm 01:42 PM

Win7 システムに Go 言語をインストールするのは比較的簡単な操作で、次の手順に従ってください。以下では、Win7 システムに Go 言語をインストールする方法を詳しく紹介します。ステップ 1: Go 言語のインストール パッケージをダウンロードする. まず、Go 言語の公式 Web サイト (https://golang.org/) を開いて、ダウンロード ページに入ります。ダウンロード ページで、Win7 システムと互換性のあるインストール パッケージのバージョンを選択してダウンロードします。 [ダウンロード] ボタンをクリックし、インストール パッケージがダウンロードされるまで待ちます。ステップ 2: Go 言語をインストールする

必須の PHP プログラム: スムーズに実行するには、これらをインストールしてください。 必須の PHP プログラム: スムーズに実行するには、これらをインストールしてください。 Mar 27, 2024 pm 05:54 PM

必須の PHP プログラム: スムーズに実行するには、これらをインストールしてください。 PHP は、Web アプリケーションの開発に広く使用されている人気のあるサーバー側スクリプト言語です。 PHP プログラムを正常に実行するには、まず必要なソフトウェアとツールをサーバーにインストールする必要があります。この記事では、PHP プログラムをスムーズに実行するためにインストールする必要があるソフトウェアとツール、および具体的なコード例を紹介します。 1. PHP インタープリター PHP プログラムの中核は PHP インタープリターであり、PHP コードの解析と実行を担当します。 PHP インタープリターをインストールするには、次のようにします。

Linux の「.a」ファイルを作成して実行する Linux の「.a」ファイルを作成して実行する Mar 20, 2024 pm 04:46 PM

Linux オペレーティング システムでファイルを操作するには、開発者がファイル、コード、プログラム、スクリプトなどを効率的に作成および実行できるようにするさまざまなコマンドとテクニックを使用する必要があります。 Linux 環境では、拡張子「.a」を持つファイルは静的ライブラリとして非常に重要です。これらのライブラリはソフトウェア開発において重要な役割を果たし、開発者が複数のプログラム間で共通の機能を効率的に管理および共有できるようにします。 Linux 環境で効果的なソフトウェア開発を行うには、「.a」ファイルの作成方法と実行方法を理解することが重要です。この記事では、Linux の「.a」ファイルのインストールと構成方法を包括的に紹介します。Linux の「.a」ファイルの定義、目的、構造、作成および実行方法について見てみましょう。 Lとは何ですか

See all articles