Image 图像函数
简介
PHP 不仅限于只产生 HTML 的输出。还可以创建及操作多种不同图像格式的图像文件,包括 gif,png,jpg,wbmp 和 xpm。更方便的是,PHP 可以直接将图像流输出到浏览器。要处理图像,需要在编译 PHP 时加上图像函数的 GD 库。GD 和 PHP 还可能需要其它的库,视乎需要支持哪些图像格式而定。
可以在 PHP 中使用图像函数来得到 JPEG,GIF,PNG,SWF,TIFF 和 JPEG2000 图像的大小。
Note: 阅读需求一节以了解怎样扩展图像能力来读取,写入和修改图像以及读取数码相机拍摄的照片中的元数据。
需求
如果有 GD 库(在 » https://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 | » https://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 | » https://www.freetype.org/ | |
FreeType 2 | » https://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 中,或者在运行时被动态加载后才有效。
- IMG_GIF (integer)
- IMG_JPG (integer)
- IMG_JPEG (integer)
- IMG_PNG (integer)
- IMG_WBMP (integer)
- IMG_XPM (integer)
- IMG_COLOR_TILED (integer)
- IMG_COLOR_STYLED (integer)
- IMG_COLOR_BRUSHED (integer)
- IMG_COLOR_STYLEDBRUSHED (integer)
- IMG_COLOR_TRANSPARENT (integer)
- IMG_ARC_ROUNDED (integer)
- IMG_ARC_PIE (integer)
- IMG_ARC_CHORD (integer)
- IMG_ARC_NOFILL (integer)
- IMG_ARC_EDGED (integer)
- IMAGETYPE_GIF (integer)
- IMAGETYPE_JPEG (integer)
- IMAGETYPE_PNG (integer)
- IMAGETYPE_SWF (integer)
- IMAGETYPE_PSD (integer)
- IMAGETYPE_BMP (integer)
- IMAGETYPE_WBMP (integer)
- IMAGETYPE_XBM (integer)
- IMAGETYPE_TIFF_II (integer)
- IMAGETYPE_TIFF_MM (integer)
- IMAGETYPE_IFF (integer)
- IMAGETYPE_JB2 (integer)
- IMAGETYPE_JPC (integer)
- IMAGETYPE_JP2 (integer)
- IMAGETYPE_JPX (integer)
- IMAGETYPE_SWC (integer)
范例
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);
?>
Table of Contents
- gd_info — 取得当前安装的 GD 库的信息
- getimagesize — 取得图像大小
- image_type_to_extension — 取得图像类型的文件后缀
- image_type_to_mime_type — 取得 getimagesize,exif_read_data,exif_thumbnail,exif_imagetype 所返回的图像类型的 MIME 类型
- image2wbmp — 以 WBMP 格式将图像输出到浏览器或文件
- imagealphablending — 设定图像的混色模式
- imageantialias — 是否使用抗锯齿(antialias)功能
- imagearc — 画椭圆弧
- imagechar — 水平地画一个字符
- imagecharup — 垂直地画一个字符
- imagecolorallocate — 为一幅图像分配颜色
- imagecolorallocatealpha — 为一幅图像分配颜色 + alpha
- imagecolorat — 取得某像素的颜色索引值
- imagecolorclosest — 取得与指定的颜色最接近的颜色的索引值
- imagecolorclosestalpha — 取得与指定的颜色加透明度最接近的颜色
- imagecolorclosesthwb — 取得与给定颜色最接近的色度的黑白色的索引
- imagecolordeallocate — 取消图像颜色的分配
- imagecolorexact — 取得指定颜色的索引值
- imagecolorexactalpha — 取得指定的颜色加透明度的索引值
- imagecolormatch — 使一个图像中调色板版本的颜色与真彩色版本更能匹配
- imagecolorresolve — 取得指定颜色的索引值或有可能得到的最接近的替代值
- imagecolorresolvealpha — 取得指定颜色 + alpha 的索引值或有可能得到的最接近的替代值
- imagecolorset — 给指定调色板索引设定颜色
- imagecolorsforindex — 取得某索引的颜色
- imagecolorstotal — 取得一幅图像的调色板中颜色的数目
- imagecolortransparent — 将某个颜色定义为透明色
- imageconvolution — 用系数 div 和 offset 申请一个 3x3 的卷积矩阵
- imagecopy — 拷贝图像的一部分
- imagecopymerge — 拷贝并合并图像的一部分
- imagecopymergegray — 用灰度拷贝并合并图像的一部分
- imagecopyresampled — 重采样拷贝部分图像并调整大小
- imagecopyresized — 拷贝部分图像并调整大小
- imagecreate — 新建一个基于调色板的图像
- imagecreatefromgd2 — 从 GD2 文件或 URL 新建一图像
- imagecreatefromgd2part — 从给定的 GD2 文件或 URL 中的部分新建一图像
- imagecreatefromgd — 从 GD 文件或 URL 新建一图像
- imagecreatefromgif — 从 GIF 文件或 URL 新建一图像
- imagecreatefromjpeg — 从 JPEG 文件或 URL 新建一图像
- imagecreatefrompng — 从 PNG 文件或 URL 新建一图像
- imagecreatefromstring — 从字符串中的图像流新建一图像
- imagecreatefromwbmp — 从 WBMP 文件或 URL 新建一图像
- imagecreatefromxbm — 从 XBM 文件或 URL 新建一图像
- imagecreatefromxpm — 从 XPM 文件或 URL 新建一图像
- imagecreatetruecolor — 新建一个真彩色图像
- imagedashedline — 画一虚线
- imagedestroy — 销毁一图像
- imageellipse — 画一个椭圆
- imagefill — 区域填充
- imagefilledarc — 画一椭圆弧且填充
- imagefilledellipse — 画一椭圆并填充
- imagefilledpolygon — 画一多边形并填充
- imagefilledrectangle — 画一矩形并填充
- imagefilltoborder — 区域填充到指定颜色的边界为止
- imagefilter — 对图像使用过滤器
- imagefontheight — 取得字体高度
- imagefontwidth — 取得字体宽度
- imageftbbox — 给出一个使用 FreeType 2 字体的文本框
- imagefttext — 使用 FreeType 2 字体将文本写入图像
- imagegammacorrect — 对 GD 图像应用 gamma 修正
- imagegd2 — 将 GD2 图像输出到浏览器或文件
- imagegd — 将 GD 图像输出到浏览器或文件
- imagegif — 以 GIF 格式将图像输出到浏览器或文件
- imagegrabscreen — Captures the whole screen
- imagegrabwindow — Captures a window
- imageinterlace — 激活或禁止隔行扫描
- imageistruecolor — 检查图像是否为真彩色图像
- imagejpeg — 以 JPEG 格式将图像输出到浏览器或文件
- imagelayereffect — 设定 alpha 混色标志以使用绑定的 libgd 分层效果
- imageline — 画一条线段
- imageloadfont — 载入一新字体
- imagepalettecopy — 将调色板从一幅图像拷贝到另一幅
- imagepng — 以 PNG 格式将图像输出到浏览器或文件
- imagepolygon — 画一个多边形
- imagepsbbox — 给出一个使用 PostScript Type1 字体的文本方框
- imagepsencodefont — 改变字体中的字符编码矢量
- imagepsextendfont — 扩充或精简字体
- imagepsfreefont — 释放一个 PostScript Type 1 字体所占用的内存
- imagepsloadfont — 从文件中加载一个 PostScript Type 1 字体
- imagepsslantfont — 倾斜某字体
- imagepstext — 用 PostScript Type1 字体把文本字符串画在图像上
- imagerectangle — 画一个矩形
- imagerotate — 用给定角度旋转图像
- imagesavealpha — 设置标记以在保存 PNG 图像时保存完整的 alpha 通道信息(与单一透明色相反)
- imagesetbrush — 设定画线用的画笔图像
- imagesetpixel — 画一个单一像素
- imagesetstyle — 设定画线的风格
- imagesetthickness — 设定画线的宽度
- imagesettile — 设定用于填充的贴图
- imagestring — 水平地画一行字符串
- imagestringup — 垂直地画一行字符串
- imagesx — 取得图像宽度
- imagesy — 取得图像高度
- imagetruecolortopalette — 将真彩色图像转换为调色板图像
- imagettfbbox — 取得使用 TrueType 字体的文本的范围
- imagettftext — 用 TrueType 字体向图像写入文本
- imagetypes — 返回当前 PHP 版本所支持的图像类型
- imagewbmp — 以 WBMP 格式将图像输出到浏览器或文件
- imagexbm — 将 XBM 图像输出到浏览器或文件
- iptcembed — 将二进制 IPTC 数据嵌入到一幅 JPEG 图像中
- iptcparse — 将二进制 IPTC https://www.iptc.org/ 块解析为单个标记
- jpeg2wbmp — 将 JPEG 图像文件转换为 WBMP 图像文件
- png2wbmp — 将 PNG 图像文件转换为 WBMP 图像文件