PHP中实现大图自动缩成小图(及GD库的安装)

2016-01-29 13:41 42 1 收藏

PHP中实现大图自动缩成小图(及GD库的安装),PHP中实现大图自动缩成小图(及GD库的安装)

【 tulaoshi.com - PHP 】

我觉得网络编程与普通编程最大的区别就是,网络编程除了具备普通编程的特性外,还要花很大精力考虑速度的问题。

网站上需要很多图片,现在有很多给用户存放照片,图片的像册程序,可以让用户自己上传图片,然后自动缩成小图,可以让你在一个页面看到很多小图,然后点击小图看大图。
注意:在网页中指定长宽显示图片,只能让图片以小尺寸显示,但是大小(容量)不变(可以看看属性),速度自然很慢。真正的缩图是把大图的大小(容量)变小,就是重新生成一个小尺寸的图片文件。我的一个程序有此功能,正在测试:www1.yn.cninfo.net/love
另外,装上GD库,还有很多功能,可以用程序画图,做些特别的计数器之类,还可以支持FREETYPE字体等等,里面函数很多,功能很强大。

先简单说说GIF,JPG,PNG,BMP图的区别:他们都是图形压缩格式。GIF格式单图最多能显示256种颜色,可以保存多图,适合做小动画,容量较大。 JPEG格式,支持24位(16 百万)种颜色,适合于静态图,容量较小。PNG格式,包含GIF,JPEG的所有特点,支持48位颜色,但是容量较大,而且应用不广泛。 BMP格式,颜色少,非常老的压缩格式,对于网络来说太大了。
在PHP中实现大图自动缩成小图其实很简单,装上GD库,用一个小函数就可以了,但是安装GD库很麻烦。在1.6.2 版以前的 GD library 有支持 GIF 格式的功能,但因为 GIF 格式使用的 LZW 演算法牵涉到 Unisys 的专利权,因此在 GD library 1.6.2 版之后不支持 GIF 的格式。

PHP 在 3.0.13 版之后,终于支持了 PNG 的图型格式,使用 PNG 就不怕会有版权的问题了,而且在 PHP 这个版本以后,安装编译时会检查 GD library 支持的是旧的 GIF 格式还是新的 PNG 格式来决定是否使用 GIF 或 PNG 的专用函数。


一,安装GD库:

1.环境:windows2000server PHP4.0.4 GD IIS

在WINDOWS中安装很容易,PHP4.0以上版本中自带,装好后在php4/extensions 目录中自带动态链接库:php_gd.dll 。只要在php.ini 中把 ;extension=php_gd.dll 前面的;去掉,然后重起WEBSERVER(IIS或APACHE),就行了。运行一个带有<? phpinfo();?的PHP程序,里面有以下内容就说明可以用了:


gd

GD Support enabled

GD Version 1.6.2 or higher

FreeType Support enabled

FreeType Linkage with TTF library

JPG Support enabled

PNG Support enabled

WBMP Support enabled


另外,网上有个php_gd_gif.dll 可以下载,把它改名为php_gd.dll覆盖掉原文件,重起IIS,就可以实现带GIF库的GD库。到 http://php.weblogs.com/php_gd 下载 php_gd_404.zip,解压完成上面操作。这是for PHP4.0.4的,其他版本的PHP不能用,(老板本的PHP4.0.0可以去下载php_gd_gif.zip)。

呵呵,搞定后你的phpinfo()就会多显示一个GIF Support enabled ,但是涉及到版权问题,自己看着办吧。

在LINUX装GD库就比较麻烦了,先简单说说关于APACHE和PHP的安装:当我们在Apache环境下安装PHP的时候,你有三种安装模式可供选择:静态模块、动态模块(DSO)和CGI。

常用的是静态模块,就是APACHE和PHP在一起编译,这样PHP的执行效率高一些,但是PHP要升级或要装GD库之类的附加库时就要把两个都重新编译,很麻烦。动态模块就好办多了,单独重新
编译PHP就行了,具体安装查看PHP中的INSTALL文件。我费了半天劲安装成功了,介绍一点静态模块加GD库+JPEG+PNG的心得:

1)下载所需的库:
下载GD库:建议使用Version 1.8.4 (Stable)稳定版,我编译gd-2.0.1(BETA)时,没通过。
http://www.boutell.com/gd/

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

下载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/

以下步骤需要按顺序执行:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/php/)

2)我用的是LINUX6.1,内核是2.2.12。以ROOT进入,解压所有包,tar -zxvf filename 。然后编译:

3)如果你的LINUX没有安装zlib,必须先安装zilb,进入zlib-1.1.3 执行:
./configure
make
make install

4)进入libpng-1.0.6,可以在LINUX,或DOS下安装,LINUX下需要拷贝他的makefile文件, 执行:
cp scripts/makefile.linux makefile
make
make install

5)进入jpeg-6b 执行:
./configure
make
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等库都安装了,(安装方法大同小异,自己去找库吧),就改下面:

来源:http://www.tulaoshi.com/n/20160129/1491090.html

延伸阅读
标签: Web开发
一如往常,demo和源码的zip包在文章最后,慢慢欣赏吧! 我觉得我有必要写这个教程,因为曾经见到的大部分关于自动完成的应用程序都只是给你一个程序源码包,然后告诉你怎么使用,而不是告诉你它是如何工作的以及为什么这样做。而知道这些可以让你对这个插件可以进一步的按自己的需求定制(关于这一点我在我的blog里写过不少关于其他应用的...
mysql+httpd+gd+php+zend的安装 安装mysql shell> groupadd mysql shell> useradd -g mysql mysql shell> cd /usr/local shell> gunzip ln -s FULL-PATH-TO-MYSQL-VERSION-OS mysql shell> cd mysql shell> scripts/mysql_install_db --user=mysql shell> chown -R root . shell> chown -R mysql data shell> chgrp -R mysql . shell> bin/...
标签: Web开发
UML  是一种表现软件形态结构的图示方式,原则上来讲他允许我们可以用画图的方式设计自己的程序,如果选择了正确的工具,还可以根据图生成代码,本文中我们可以看到PHP代码通过使用 UML 类图在 UML 的表现形式,我们直接跳过关于 UML 的知识,集中介绍一些准确的代码在 UML 中的表现形式。这表示本文内容并非一篇完全的类图分析。 ...
标签: PHP
  作者: 陈新征 出处: 天极网 前言:现在很多有个人主页或者博客的朋友选择租用虚拟主机,而相当一部分虚拟主机支持php。如果你有一个支持php的主机空间,有没有用php把自己的网站武装起来呢? 能不能让php为你的网页添加一些每隔一段时间就自动更新的内容,以更好的吸引访客呢?实现这一功能并不需要太高深的编程知识,请看...
标签: PHP
  摘要:用php制作动态web页面时,在提交服务器之前,让php根据用户在当前页面上录入的某字段的值立即从数据库中取出相关的其它字段的值并显示到当前页面上,是php程序开发中的难点。本文以一个具体实例详细介绍了怎样将两个html内嵌式语言php和javascript巧妙结合起来,解决这个难点的具体方法。 关键词:php、动态、html。 现在的网...

经验教程

348

收藏

74
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部