让你的PHP同时支持GIF、png、JPEG


Posted in PHP onOctober 09, 2006

让你的PHP同时支持GIF、png、JPEG

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

1、 Jpeg6b的安装
RedHat6.2中已经有了RPM包,我们也就不需要去费劲编译了。
  放入安装盘
  mount /mnt/cdrom
  cd /mnt/cdrom/RedHat/RPMS
  rpm -ivh libjpeg*

安装成功,用rpm -ql libjpeg-6b-10 查看,发现libjpeg.so.62.0.0被拷到/usr/lib目录下。记住此目录,等会儿配php时要用。

2、 GD-1.8.3的安装
获取GD源码的地址为:
http://www.boutell.com/gd/
你当然可以自己编译,但它不支持jpeg,要打补丁。
获取补丁源码的地址为:
http://www.webofsin.com/gd-1.8.3-gif.patch
接下来………………麻烦死了……劝你还是不要自己编译了!!

有现成的东西为何不用呢?已经有人打好补丁编译好了,做成RPM。
可以在:
http://rpms.arvin.dk/rh7-backports/gd/
http://rpms.arvin.dk/gd-with_gif/
得到。世上竟然有这么好的人?;-<
真令人感动!!!

下载了几个gd-with_gif*.rpm后直接 rpm -ivh gd-with_gif* 安装。
用 rpm -ql gd-with_gif-1.8.3-7 查看
发现 libgd.so.1.8.3 放到了 /usr/gd-with_gif/lib 下
记住此目录,配php时也要用。

3、 PHP的安装和配置
鉴于曾听说php4.0不支持jpeg(不知记错没),我建议还是用php的最新版。
下面的,大家应该熟悉得不能再熟悉了吧?
于是我把php的manual抄下来:
---------------------------------
1. gunzip apache_1.3.x.tar.gz
2. tar xvf apache_1.3.x.tar
3. gunzip php-x.x.x.tar.gz
4. tar xvf php-x.x.x.tar
5. cd apache_1.3.x
6. ./configure --prefix=/www
7. cd ../php-x.x.x
8. 这里是关键!!!
  ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars --with-jpeg-dir=/usr/lib --with-gd=/usr/gd-with_gif/lib
  当然你也可以加上你自己的选项,此不赘述。
9. make
10. make install
11. cd ../apache_1.3.x
12. for PHP 4: ./configure --activate-module=src/modules/php4/libphp4.a
13. make
14. make install

Instead of this step you may prefer to simply copy the httpd binary
overtop of your existing binary. Make sure you shut down your
server first though.

15. cd ../php-x.x.x
16. for PHP 4: cp php.ini-dist /usr/local/lib/php.ini

You can edit your .ini file to set PHP options. If
you prefer this file in another location, use
--with-config-file-path=/path in step 8.

17. Edit your httpd.conf or srm.conf file and add:
   For PHP 4:  AddType application/x-httpd-php .php

You can choose any extension you wish here. .php is simply the one
we suggest. You can even include .html .

18. Use your normal procedure for starting the Apache server. (You must
  stop and restart the server, not just cause the server to reload by
  use a HUP or USR1 signal.)
---------------------------------------

终于成功了,你可以启动apache用phpinfo()试一试,发现gd那里:
----------------------
    gd
GD Support enabled
GD Version 1.6.2 or higher
GIF Support enabled
PNG Support enabled
JPG Support enabled
WBMP Support enabled
----------------------

^_^哈哈哈哈哈哈哈哈哈^_^
你现在可以用到所有的php图形函数了:
ImageCreateFromGIF() — Create a new image from file or URL
ImageCreateFromJPEG() — Create a new image from file or URL
ImageCreateFromPNG() — Create a new image from file or URL
……
绝对没问题!!!!

PHP 相关文章推荐
php单件模式结合命令链模式使用说明
Sep 07 PHP
Discuz 6.0+ 批量注册用户名
Sep 13 PHP
11个PHP 分页脚本推荐
Aug 15 PHP
php中批量修改文件后缀名的函数代码
Oct 23 PHP
nginx+php-fpm配置文件的组织结构介绍
Nov 07 PHP
PHP中批量生成静态html(命令行下运行PHP)
Apr 19 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
php $_SESSION会员登录实例分享
Jan 19 PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
Feb 23 PHP
浅谈Laravel核心解读之Console内核
Dec 02 PHP
定制404错误页面,并发信给管理员的程序
Oct 09 #PHP
php录入页面中动态从数据库中提取数据的实现
Oct 09 #PHP
使用字符串函数输出整数化的PHP版本号
Oct 09 #PHP
树型结构列出指定目录里所有文件的PHP类
Oct 09 #PHP
搜索和替换文件或目录的一个好类--很实用
Oct 09 #PHP
非常好的php目录导航文件代码
Oct 09 #PHP
PHP4.04简明安装
Oct 09 #PHP
You might like
php为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
2010/10/12 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
浅谈javascript 面向对象编程
2009/10/28 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
jquery 使用简明教程
2014/03/05 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
2015/06/23 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
jQuery鼠标悬停内容动画切换效果
2017/04/27 jQuery
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
如何通过setTimeout理解JS运行机制详解
2019/03/23 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
python实现Dijkstra静态寻路算法
2019/01/17 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
python的pygal模块绘制反正切函数图像方法
2019/07/16 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
2020/07/14 Python
学会迭代器设计模式,帮你大幅提升python性能
2021/01/03 Python
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
6PM官网:折扣鞋、服装及配饰
2018/08/03 全球购物
医学护理毕业生自荐信
2013/11/07 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
科技馆观后感
2015/06/08 职场文书
教师师德工作总结2015
2015/07/22 职场文书