问题:安装蓝点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,php4.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目录下。
进入/us淘宝c店是什么意思r/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/confheavy反义词/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]) {
ca 1:
$im = @imagecreatefromgif($srcfile);
break;
ca 2:
$im = @imagecreatefromjpeg($srcfile);
break;
ca 3:
$im = @imagecreatefrompng($srcfile);
break;
}
$srcw=imagesx($im);
$srch=imagesy($im);
if ($srcw <= $dstw && $srch <= $dsth)
imagejpeg($im,$dstfile);
el
{
if(($srcw / $srch) > ($dstw / $dsth))
$dsth = $dstw * $srch / $srcw;
el
$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。
大功告成,班师回朝。
本文发布于:2023-04-06 06:32:09,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/e3880ea8e211776725c209ff9dd394fb.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:配置PHP使之能同时支持GIF和JPEG.doc
本文 PDF 下载地址:配置PHP使之能同时支持GIF和JPEG.pdf
留言与评论(共有 0 条评论) |