您好!欢迎访问家园网-www.jy.wang!

家园网

使用GD2函数在照片上添加文字,请解析以下代码

网络 作者:本站 点击:
<?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()

    • 参数

      参数

      类型

      描述

      $path

      string

      源JPEG图片文件路径

    • 返回值:返回一个图像标识符,代表从给定文件取得的图像

4. 分配字体颜色

$textcolor = imagecolorallocate($im, 255, 255, 255);

  • 功能:为图像分配颜色(此处为白色)

  • 函数imagecolorallocate()

    • 参数

      参数

      类型

      描述

      $im

      resource

      由图像创建函数返回的图像资源

      255

      int

      红色分量(0-255)

      255

      int

      绿色分量(0-255)

      255

      int

      蓝色分量(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()

    • 参数

      参数

      类型

      描述

      $im

      resource

      图像资源

      100

      int

      字体大小(像素)

      0

      int

      文字旋转角度(0度表示从左向右阅读)

      50

      int

      文字左下角x坐标

      200

      int

      文字左下角y坐标

      $textcolor

      int

      文字颜色标识符

      $fnt

      string

      TrueType字体文件路径

      $str

      string

      要写入的文字字符串

    • 返回值:返回包含8个单元的数组,表示文本外框的四个角坐标

8. 输出图像到浏览器

imagejpeg($im);

  • 功能:将图像以JPEG格式输出到浏览器或文件

  • 函数imagejpeg()

    • 如果省略第二个参数,图像将直接输出到浏览器

    • 参数

      参数

      类型

      描述

      $im

      resource

      图像资源

      null


      省略时直接输出到浏览器

      quality

      int

      (可选)JPEG质量(0-100),默认约75

    • 注意事项

9. 释放内存

imagedestroy($im);

  • 功能:销毁图像资源,释放内存

  • 函数imagedestroy()

    • 参数

      参数

      类型

      描述

      $im

      resource

      要销毁的图像资源

函数参数总结表

函数

参数

类型

必选

描述

header()

content-type

string

设置HTTP响应头

imagecreatefromjpeg()

filename

string

JPEG文件路径

imagecolorallocate()

im

resource

图像资源


red

int(0-255)

红色分量


green

int(0-255)

绿色分量


blue

int(0-255)

蓝色分量

imageTTFText()

im

resource

图像资源


size

float

字体大小(像素)


angle

float

旋转角度(度)


x

int

左下角x坐标


y

int

左下角y坐标


color

int

颜色标识符


fontfile

string

字体文件路径


text

string

要写入的文字

imagejpeg()

im

resource

图像资源


filename

string

保存到文件路径


quality

int(0-100)

JPEG质量

imagedestroy()

im

resource

要销毁的图像资源

代码执行流程总结

  1. 设置输出类型为JPEG图像

  2. 指定源图片路径

  3. 从JPEG文件创建图像资源

  4. 为文字分配白色

  5. 指定TrueType字体文件

  6. 定义要显示的文字内容

  7. 将文字写入图像指定位置

  8. 输出JPEG图像到浏览器

  9. 销毁图像资源释放内存

注意事项

  1. 确保PHP已安装GD库扩展

  2. 字体文件路径必须正确且PHP有读取权限

  3. 源图片必须存在且可读

  4. header()函数前不能有任何输出

  5. 坐标系统以左上角为原点(0,0)

  6. 文字位置基于左下角计算

  7. 生产环境应考虑错误处理(如文件不存在情况)


标签: