php_gd
扩展是 php 用来操作图像的扩展,使用 gd 扩展库提供的函数,可以创建,修改和生成想要的图像文件, php 常见的应用之一:验证码就是利用 gd 库来实现的。
一、 开启 php-gd2 扩展:修改 php.ini 文件
windows 系统:
extension = php_gd2.dll
Linux 系统:
extension = php_gd2.so
二、 生成图片
1. 创建画布
画布可以看成是一种可以用来操作图像资源的资源句柄。
imageCreate(width, height)
: 创建一个基于调色板新画布
imageCreateTrueColor(width, height)
: 创建一个真彩色的画布
创建基于图片的画布(打开一个图片资源):
imageCreateFromJPEG(path)
: 打开一个 jpeg 格式的图片文件到画布
imageCreateFromPNG(path)
: 打开一个 png 格式的图片文件到画布
imageCreateFromGIF(path)
: 打开一个 gif 格式的图片文件到画布
2. 操作画布
imageColorAllocate(画布资源, R, G, B)
: 向指定的画布分配颜色,如果需要再画布上使用某个颜色,应先将该颜色分配到画布上
3. 填充画布
将填充点,连续并且颜色相同的点进行填充(替换),画布填充采用坐标系的方式进行管理,坐标系原点位置为画布的左上角,向右方向为x轴正方向,向下为y轴正方向
imageFill(画布, 填充位置x, 填充位置y, 颜色标示)
4. 输出画布
将画布中处理好的图样信息输出,输出的地址有可能是浏览器也有可能是文件
imagePNG(画布[, path])
imageJPEG(画布[, path])
imageGIF(画布[, path])
如果参数中没有指定文件地址,则表示直接将图像输出到浏览器,这时候需要通过 header() 函数告知浏览器输出文件的格式信息,一般是指定 http 头部的 Content-type 信息,一个画布可以输出多次,每次输出的格式可以不同。
5. 销毁画布资源
imageDestroy(画布)
三、 示例代码
向浏览器输出一个 500*300 的绿色背景 png 图片
<?php
// 第一步:创建一个宽高为 500*300 的画布
$img = imageCreateTrueColor(500, 300);
// 第二步:为画布创建用来填充的颜色,此处为绿色
$green = imageColorAllocate($img, 0x0, 0xff, 0x0);
// 第三步:用绿色填充画布背景
imageFill($img, 0, 0, $green);
// 第四步:指定 http 头部信息,为将图样输出到浏览器做准备
header('Content-type:image/png;');
// 第五步:输出图样为 png 格式
imagePNG($img);
// 第六步:销毁图样资源
imageDestroy($img);