前言
GD 库是 PHP 处理图形的扩展库,GD 库提供了一系列用来处理图片的 API,使用 GD 库可以处理图片或者生成图片,还可以直接输入到浏览器中,也可以给图片加水印、做验证码等等。
截至目前,如果你使用 phpstudy
集成的环境,那么 GD 库无需安装,如果你手动配置的 PHP 服务器,那么你需要繁琐的安装步骤,这里暂不做介绍。
创建图像及简单处理
下面,我们使用 GD 库提供的函数,来完成这样一个图片:
- 图像大小(像素):100 x 100
- 图像背景颜色:黑色
- 图像格式:png
- 图像处理:画一个对角线
<?php
# 1. 创建画布
$img = imagecreatetruecolor(100, 100);//宽(x)高(y)为100
# 2. 定义一些颜色备用(用于后面的画布处理)
$black = imagecolorallocate($img, 0, 0, 0);//黑色(背景)
$red = imagecolorallocate($img, 255, 0, 0);//红色(对角线)
# 3. 填充画布背景颜色
imagefill($img, 100, 100, $black);//填充画布颜色为黑色
# 4. 对画布做一些处理(对角线画一条红线)
imageline($img, 0,0, 100,100, $red);
# 5. 释放图像(销毁)
imagedestroy($img);//释放内存
?>
别急,上述代码运行后你看不到任何结果,虽然我们完成了图像的创建与处理,但没有指定 “输出方式”,固然没有显示结果。 下面我们来做显示。
保存图像文件
顾名思义,将我们刚刚做好的图像,保存到文件夹中。
<?php
# 1. 创建画布
$img = imagecreatetruecolor(100, 100);//宽(x)高(y)为100
# 2. 定义一些颜色备用(用于后面的画布处理)
$black = imagecolorallocate($img, 0, 0, 0);//黑色(背景)
$red = imagecolorallocate($img, 255, 0, 0);//红色(对角线)
# 3. 填充画布背景颜色
imagefill($img, 100, 100, $black);//填充画布颜色为黑色
# 4. 对画布做一些处理(对角线画一条红线)
imageline($img, 0,0, 100,100, $red);
# 5. 保存到文件夹中(默认存放路径为该php文件所在目录)
imagepng($img, "./GD.png");//文件名为GD.png
# 6. 释放图像(销毁)
imagedestroy($img);//释放内存
?>
运行以上代码,然后在浏览器中刷新一次(没有任何提示及显示),然后查看该 php 所在的文件夹中是否多出了一个 GD.png
文件,双击打开预览。
输出到浏览器
顾名思义,即不保存该文件,而是直接在浏览器查看。
<?php
# 1. 创建画布
$img = imagecreatetruecolor(100, 100);//宽(x)高(y)为100
# 2. 定义一些颜色备用(用于后面的画布处理)
$black = imagecolorallocate($img, 0, 0, 0);//黑色(背景)
$red = imagecolorallocate($img, 255, 0, 0);//红色(对角线)
# 3. 填充画布背景颜色
imagefill($img, 100, 100, $black);//填充画布颜色为黑色
# 4. 对画布做一些处理(对角线画一条红线)
imageline($img, 0,0, 100,100, $red);
# 5. 输出到浏览器
header('Content-Type: image/png');//必须声明
imagepng($img);//以png格式输出到浏览器
# 6. 释放图像(销毁)
imagedestroy($img);//释放内存
?>
运行以上代码,你会发现当前浏览器已经显示了我们做的图像,如下图所示:
总结
当然,保存图像文件与输出到浏览器,两个可以同时兼得。
GD 库说白了就是系统为我们提供的一套 图像处理
解决方案,提供给我们大量函数及API,只要会用就行,没有任何难度,该文章所用的函数,都可以在 PHP 手册或者官网找到函数介绍。