# 图像处理和 GD

# 简介

PHP 并不仅限于创建 HTML 输出， 它也可以创建和处理包括 GIF， PNG， JPEG， WBMP 以及 XPM 在内的多种格式的图像。 更加方便的是，PHP 可以直接将图像数据流输出到浏览器。 要想在 PHP 中使用图像处理功能，你需要连带 GD 库一起来编译 PHP。 GD 库和 PHP 可能需要其他的库， 这取决于你要处理的图像格式。

你可以使用 PHP 中的图像函数来获取下列格式图像的大小： JPEG， GIF， PNG， SWF， TIFF 和 JPEG2000。

如果联合 exif 扩展 一起使用， 你可以操作存储在 JPEG 和 TIFF 图像文件头部的信息， 这样就就可以获取数码相机所产生的元数据。 exif 相关的函数不需要 GD 库亦可使用。

> 注意: 关于如何扩展图像处理能力，例如读取、写入以及修改， 请参考“需求”一节。 要想读取数码相机拍摄的图片的元数据， 你需要上面提到的 exif 扩展。

> 注意: getimagesize() 函数不需要 GD 扩展库。

警告

由于绑定的 GD 库使用 Zend 内存管理机制来分配内存， 所以所使用的内存大小不受 memory_limit 配置参数限制。

GD 库支持多种图像格式， 下标所列的是 GD 所支持的格式，请注意备图像格式对应的读取/写入支持的可用性。

GD 所支持的格式
格式 | 支持读取 | 支持写入 | 备注
--- | --- | --- | ---
JPEG | `true` | `true` |
PNG | `true` | `true` |
GIF | `true` | `true` |
XBM | `true` | `true` |
XPM | `true` | `false` |
WBMP | `true` | `true` |
WebP | `true` | `true` |
BMP | `true` | `true` | 从 PHP 7.2.0 开始支持

很遗憾的是，虽然上表中显示大部分图像格式都是支持读取和写入的， 但是不代表你的 PHP 环境在编译的时候是支持这些操作的。 要想检测 GD 库所支持的格式，请使用 gd_info() 函数， 更多信息请参考 “安装” 一章。

- 安装/配置
  - 需求
  - 安装
  - 运行时配置
  - 资源类型
- 预定义常量
- 示例
  - 使用 PHP 创建 PNG 图像
  - 使用 Alpha 通道为图像加水印
  - 使用 imagecopymerge 函数创建半透明水印
- GD 和图像处理 函数
  - gd_info — 取得当前安装的 GD 库的信息
  - getimagesize — 取得图像大小
  - getimagesizefromstring — 从字符串中获取图像尺寸信息
  - image_type_to_extension — 取得图像类型的文件后缀
  - image_type_to_mime_type — 取得 getimagesize、exif_read_data、exif_thumbnail、exif_imagetype 所返回的图像类型的 MIME 类型
  - image2wbmp — 输出图象到浏览器或文件。
  - imageaffine — 返回经过仿射变换后的图像，剪切区域可选
  - imageaffinematrixconcat — Concatenate two affine transformation matrices
  - imageaffinematrixget — Get an affine transformation matrix
  - imagealphablending — 设定图像的混色模式
  - imageantialias — 是否使用抗锯齿（antialias）功能
  - imagearc — 画弧线
  - imageavif — 输出图象到浏览器或文件。
  - imagebmp — Output a BMP image to browser or file
  - imagechar — 水平地绘制一个字符
  - imagecharup — 垂直地绘制一个字符
  - imagecolorallocate — 为图像分配颜色
  - imagecolorallocatealpha — 为图像分配颜色
  - imagecolorat — 取得某像素的颜色索引值
  - imagecolorclosest — 取得与指定的颜色最接近的颜色索引值
  - imagecolorclosestalpha — 获取最接近指定颜色 + alpha 的颜色索引
  - imagecolorclosesthwb — 取得与给定颜色最接近的色度的黑白色的索引
  - imagecolordeallocate — 取消图像颜色的分配
  - imagecolorexact — 取得指定颜色的索引值
  - imagecolorexactalpha — 取得指定的颜色加透明度的索引值
  - imagecolormatch — 使一个图像中调色板版本的颜色与真彩色版本更能匹配
  - imagecolorresolve — 取得指定颜色的索引值或有可能得到的最接近的替代值
  - imagecolorresolvealpha — 取得指定颜色 + alpha 或其最接近的替代值
  - imagecolorset — 给指定调色板索引设定颜色
  - imagecolorsforindex — 获取索引的颜色
  - imagecolorstotal — 取得图像调色板中的颜色数量
  - imagecolortransparent — 将颜色定义为透明
  - imageconvolution — 用系数 div 和 offset 申请一个 3x3 的卷积矩阵
  - imagecopy — 拷贝图像的一部分
  - imagecopymerge — 拷贝并合并图像的一部分
  - imagecopymergegray — 用灰度复制并合并图像的一部分
  - imagecopyresampled — 重采样拷贝部分图像并调整大小
  - imagecopyresized — 拷贝部分图像并调整大小
  - imagecreate — 创建新的基于调色板的图像
  - imagecreatefromavif — 由文件或 URL 创建一个新图象。
  - imagecreatefrombmp — 由文件或 URL 创建一个新图象。
  - imagecreatefromgd — 从 GD 文件或 URL 新建一图像
  - imagecreatefromgd2 — 从 GD2 文件或 URL 新建一图像
  - imagecreatefromgd2part — 从指定的 GD2 文件或 URL 的部分创建新图像
  - imagecreatefromgif — 由文件或 URL 创建一个新图象。
  - imagecreatefromjpeg — 由文件或 URL 创建一个新图象。
  - imagecreatefrompng — 由文件或 URL 创建一个新图象。
  - imagecreatefromstring — 从字符串的图像流中新建图像
  - imagecreatefromtga — 由文件或 URL 创建一个新图象。
  - imagecreatefromwbmp — 由文件或 URL 创建一个新图象。
  - imagecreatefromwebp — 由文件或 URL 创建一个新图象。
  - imagecreatefromxbm — 由文件或 URL 创建一个新图象。
  - imagecreatefromxpm — 由文件或 URL 创建一个新图象。
  - imagecreatetruecolor — 新建真彩色图像
  - imagecrop — Crop an image to the given rectangle
  - imagecropauto — Crop an image automatically using one of the available modes
  - imagedashedline — 绘制虚线
  - imagedestroy — 销毁图像
  - imageellipse — 画椭圆
  - imagefill — 漫水填充
  - imagefilledarc — 绘制部分弧形并填充
  - imagefilledellipse — 绘制椭圆并填充
  - imagefilledpolygon — 绘制多边形并填充
  - imagefilledrectangle — 绘制矩形并填充
  - imagefilltoborder — 漫水填充特定颜色
  - imagefilter — 对图像使用过滤器
  - imageflip — Flips an image using a given mode
  - imagefontheight — 获取字体高度
  - imagefontwidth — 获取字体宽度
  - imageftbbox — 通过 freetype2 使用字体给出文本的边界框
  - imagefttext — 使用 FreeType 2 字体将文本写入图像
  - imagegammacorrect — 对 GD 图像应用伽玛校正
  - imagegd — 将 GD 图像输出到浏览器或文件
  - imagegd2 — 将 GD2 图像输出到浏览器或文件
  - imagegetclip — Get the clipping rectangle
  - imagegetinterpolation — Get the interpolation method
  - imagegif — 输出图象到浏览器或文件。
  - imagegrabscreen — Captures the whole screen
  - imagegrabwindow — Captures a window
  - imageinterlace — 启用或禁用隔行扫描
  - imageistruecolor — 检查图像是否为真彩色图像
  - imagejpeg — 输出图象到浏览器或文件。
  - imagelayereffect — 设定 alpha 混合标志以使用分层效果
  - imageline — 绘制直线
  - imageloadfont — 载入新字体
  - imageopenpolygon — Draws an open polygon
  - imagepalettecopy — 将调色板从一个图像复制到另一个
  - imagepalettetotruecolor — Converts a palette based image to true color
  - imagepng — 将 PNG 图像输出到浏览器或文件
  - imagepolygon — 绘制多边形
  - imagerectangle — 绘制矩形
  - imageresolution — Get or set the resolution of the image
  - imagerotate — 用给定角度旋转图像
  - imagesavealpha — 保存图像时是否保留完整的 alpha 通道信息
  - imagescale — Scale an image using the given new width and height
  - imagesetbrush — 为线条设置笔刷图像
  - imagesetclip — Set the clipping rectangle
  - imagesetinterpolation — Set the interpolation method
  - imagesetpixel — 设置单个像素
  - imagesetstyle — 设定线条的样式
  - imagesetthickness — 设定画线的粗细
  - imagesettile — 设置要填充的平铺图像
  - imagestring — 水平绘制字符串
  - imagestringup — 垂直绘制字符串
  - imagesx — 取得图像宽度
  - imagesy — 取得图像高度
  - imagetruecolortopalette — 将真彩色图像转换为调色板图像
  - imagettfbbox — 取得使用 TrueType 字体的文本的边界框
  - imagettftext — 用 TrueType 字体向图像写入文本
  - imagetypes — 返回 PHP 内置支持的图像类型
  - imagewbmp — 输出图象到浏览器或文件。
  - imagewebp — 将 WebP 格式的图像输出到浏览器或文件
  - imagexbm — 输出 XBM 图像到浏览器或文件
  - iptcembed — 嵌入二进制 IPTC 数据到 JPEG 图像中
  - iptcparse — 将二进制 IPTC 块解析为单个标签
  - jpeg2wbmp — 将 JPEG 图像文件转换为 WBMP 图像文件
  - png2wbmp — 将 PNG 图像文件转换为 WBMP 图像文件
- GdImage — GdImage 类
- GdFont — The GdFont class

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open