<?php
header("content-type:image/jpeg"); //定义输出为图像类型
$path = "mingri.jpg"; //图片路径
$im=imagecreatefromjpeg($path); //载入图片
$textcolor=imagecolorallocate($im,255,255,255); //设置字体颜色,值为RGB颜色值
$fnt="c:/windows/fonts/simfang.ttf"; //定义字体
$str = '明日学院';
imageTTFText($im,100,0,50,200,$textcolor,$fnt,$str); //写TTF文字到图中
imagejpeg($im); //建立JPEG图形
imagedestroy($im); //结束图形,释放内存空间
?>逐行代码解析
1. 设置HTTP响应头
header("content-type:image/jpeg");
功能:设置HTTP响应头,告诉浏览器返回的内容是JPEG图像格式
参数:
content-type:image/jpeg:指定输出内容类型为JPEG图像注意事项:
header()函数必须在任何实际输出之前调用分号
;是PHP语句结束符
2. 定义图片路径
$path = "mingri.jpg";
功能:定义要处理的源图片路径
变量:
$path:字符串变量,存储图片文件路径"mingri.jpg":相对于PHP脚本的图片文件名注意事项:
文件路径可以是相对路径或绝对路径
确保PHP有权限读取该文件
3. 创建图像资源
$im = imagecreatefromjpeg($path);
功能:从JPEG文件创建图像资源
函数:
imagecreatefromjpeg()参数:
参数
类型
描述
$pathstring
源JPEG图片文件路径
返回值:返回一个图像标识符,代表从给定文件取得的图像
4. 分配字体颜色
$textcolor = imagecolorallocate($im, 255, 255, 255);
功能:为图像分配颜色(此处为白色)
函数:
imagecolorallocate()参数:
参数
类型
描述
$imresource
由图像创建函数返回的图像资源
255int
红色分量(0-255)
255int
绿色分量(0-255)
255int
蓝色分量(0-255)
返回值:返回一个颜色标识符
5. 定义字体路径
$fnt = "c:/windows/fonts/simfang.ttf";
功能:定义TrueType字体的文件路径
变量:
$fnt:存储字体文件路径"c:/windows/fonts/simfang.ttf":仿宋字体文件路径注意事项:
需要使用服务器上实际存在的字体文件
Linux系统通常使用
/usr/share/fonts/路径
6. 定义水印文字
$str = '明日学院';
功能:定义要写入图片的文字内容
变量:
$str:存储要显示的文字内容
7. 写入TTF文字到图像
imageTTFText($im, 100, 0, 50, 200, $textcolor, $fnt, $str);
功能:使用TrueType字体向图像写入文本
函数:
imageTTFText()参数:
参数
类型
描述
$imresource
图像资源
100int
字体大小(像素)
0int
文字旋转角度(0度表示从左向右阅读)
50int
文字左下角x坐标
200int
文字左下角y坐标
$textcolorint
文字颜色标识符
$fntstring
TrueType字体文件路径
$strstring
要写入的文字字符串
返回值:返回包含8个单元的数组,表示文本外框的四个角坐标
8. 输出图像到浏览器
imagejpeg($im);
功能:将图像以JPEG格式输出到浏览器或文件
函数:
imagejpeg()如果省略第二个参数,图像将直接输出到浏览器
参数:
参数
类型
描述
$imresource
图像资源
null省略时直接输出到浏览器
qualityint
(可选)JPEG质量(0-100),默认约75
注意事项:
9. 释放内存
imagedestroy($im);
功能:销毁图像资源,释放内存
函数:
imagedestroy()参数:
参数
类型
描述
$imresource
要销毁的图像资源
函数参数总结表
函数 | 参数 | 类型 | 必选 | 描述 |
|---|---|---|---|---|
|
| string | 是 | 设置HTTP响应头 |
|
| string | 是 | JPEG文件路径 |
|
| resource | 是 | 图像资源 |
| int(0-255) | 是 | 红色分量 | |
| int(0-255) | 是 | 绿色分量 | |
| int(0-255) | 是 | 蓝色分量 | |
|
| resource | 是 | 图像资源 |
| float | 是 | 字体大小(像素) | |
| float | 是 | 旋转角度(度) | |
| int | 是 | 左下角x坐标 | |
| int | 是 | 左下角y坐标 | |
| int | 是 | 颜色标识符 | |
| string | 是 | 字体文件路径 | |
| string | 是 | 要写入的文字 | |
|
| resource | 是 | 图像资源 |
| string | 否 | 保存到文件路径 | |
| int(0-100) | 否 | JPEG质量 | |
|
| resource | 是 | 要销毁的图像资源 |
代码执行流程总结
设置输出类型为JPEG图像
指定源图片路径
从JPEG文件创建图像资源
为文字分配白色
指定TrueType字体文件
定义要显示的文字内容
将文字写入图像指定位置
输出JPEG图像到浏览器
销毁图像资源释放内存
注意事项
确保PHP已安装GD库扩展
字体文件路径必须正确且PHP有读取权限
源图片必须存在且可读
header()函数前不能有任何输出坐标系统以左上角为原点(0,0)
文字位置基于左下角计算
生产环境应考虑错误处理(如文件不存在情况)