PHP 不仅限于只产生 HTML 的输出。还可以创建及操作多种不同图像格式的图像文件,包括 gif,png,jpg,wbmp 和 xpm。更方便的是,PHP 可以直接将图像流输出到浏览器。要处理图像,需要在编译 PHP 时加上图像函数的 GD 库。GD 和 PHP 还可能需要其它的库,视乎需要支持哪些图像格式而定。
可以在 PHP 中使用图像函数来得到 JPEG,GIF,PNG,SWF,TIFF 和 JPEG2000 图像的大小。
Note: 阅读需求一节以了解怎样扩展图像能力来读取,写入和修改图像以及读取数码相机拍摄的照片中的元数据。
如果有 GD 库(在 » http://www.libgd.org/),可以创建及操作图像。
所能处理的图像格式取决于所安装的 GD 版本,以及其它 GD 可能用到的来访问这些图像格式的库。低于 gd-1.6 版本的 GD 支持 GIF 图像格式,不支持 PNG,高于 gd-1.6 低于 gd-2.0.28 的版本支持 PNG,不支持 GIF。在 gd-2.0.28 中又重新支持 GIF 了。
Note: 自 PHP 4.3 起绑定了一个 GD 库的版本。这个绑定的版本具有一些附加的特色例如透明混色,应优先使用此版本,因为它的代码维护得更好以及更加稳定。
可能想要增加 GD 处理的图像格式。
图像格式 | 要下载的库 | 注解 |
---|---|---|
gif | 仅在低于 gd-1.6 与高于 gd-2.0.28 的 GD 版本中支持。PHP 4.3.0 以及绑定的 GD 库中支持只读的 GIF。PHP 4.3.9 和 PHP 5.0.1 起支持写入。 | |
jpeg-6b | » ftp://ftp.uu.net/graphics/jpeg/ | |
png | » http://www.libpng.org/pub/png/libpng.html | 仅在高于 gd-1.6 的 GD 版本中支持。 |
xpm | » ftp://metalab.unc.edu/pub/Linux/libs/X/!INDEX.html | 如果系统中安装了 X 环境,则很可能已经有了这个库。 |
可能想要增强 GD 处理不同字体的能力。支持下列字库:
字库 | 下载位置 | 注解 |
---|---|---|
FreeType 1.x | » http://www.freetype.org/ | |
FreeType 2 | » http://www.freetype.org/ | |
T1lib | » ftp://sunsite.unc.edu/pub/Linux/libs/graphics/) | 支持 Type 1 字体。 |
如果 PHP 编译时指定了 --enable-exif,就可以操作存储于 JPEG 和 TIFF 图像文件头中的信息。这样就可以读取上面提到的数码相机生成的照片中的元数据。这些函数不需要 GD 库。
要激活 GD 支持,配置 PHP 时加上 --with-gd[=DIR],DIR 是 GD 的基本安装目录。要使用推荐的绑定的 GD 库版本(首次绑定于 PHP 4.3.0),使用 --with-gd。要编译 GD 库,需要libpng 和 libjpeg。
在 Windows 中,需要将 GD2 的 DLL 文件 php_gd2.dll 作为一个扩展包含在 php.ini 中。GD1 的 DLL 文件 php_gd.dll 在 PHP 4.3.2 中被删除了。此外要注意首选的真彩色图像函数,例如 imagecreatetruecolor(),需要 GD2。
Note: 要在 Windows 下启用 exif,在 php.ini 中 php_mbstring.dll 必须在 php_exif.dll 之前加载。
要在 PHP 3 中禁止 GD 支持,在配置时加上 --without-gd。
要增强 GD 的能力以处理更多的图像格式,在配置 PHP 时指定 --with-XXXX 的配置开关。
图像格式 | 配置开关 |
---|---|
jpeg-6b | 要激活 jpeg-6b 的支持,加上 --with-jpeg-dir=DIR. |
png | 要激活 png 的支持,加上 --with-png-dir=DIR。注意,libpng 需要 zlib library,因此配置中还要加上 --with-zlib-dir[=DIR]。 |
xpm | 要激活 xpm 的支持,加上 --with-xpm-dir=DIR。如果配置时提示找不到所需要的库,可以加上到 X11 库的路径。 |
Note: 当把 PHP 和 libpng 一起编译时,必须使用和 GD 库连接的同一个版本。
要增强 GD 的能力以处理更多的字体,在配置 PHP 时指定 --with-XXXX 的配置开关。
字库 | 配置开关 |
---|---|
FreeType 1.x | 要激活 FreeType 1.x 的支持,加上 --with-ttf[=DIR]。 |
FreeType 2 | 要激活 FreeType 2 的支持,加上 --with-freetype-dir=DIR。 |
T1lib | 要激活 T1lib(Type 1 字体),加上 --with-t1lib[=DIR]。 |
本地 TrueType 字符串函数 | 要激活本地 TrueType 字符串函数的支持,加上 --enable-gd-native-ttf。 |
没有 image 特定的配置选项。不过可以参考 exif 扩展库配置指令。
本扩展模块未定义任何资源类型。
以下常量由本扩展模块定义,因此只有在本扩展模块被编译到 PHP 中,或者在运行时被动态加载后才有效。
Example#1 用 PHP 创建 PNG 图像
<?php
header("Content-type: image/png");
$string = $_GET['text'];
$im = imagecreatefrompng("images/button1.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
imagepng($im);
imagedestroy($im);
?>