PHP通过GD扩展去操作图片,是先在内存中处理,处理完以后以文件流的方式输出,可以输出到浏览器,也可以输出到磁盘上。因此一般的步骤是:

  1. 创建画布。其实就是在内存中开辟一块区域;
  2. 在画布上绘制图形。可以填充颜色,绘制“点”、“线”、“文本”、“图像”等;
  3. 输出图像(浏览器或者磁盘);
  4. 销毁图像,释放资源。

创建画布

使用 GD函数库可以实现对各种图形图像的处理,创建画布是使用GD函数库来创建图像的第一步,无论创建什么样的图像,首先都需要创建一个画布,其他操作都在这个画布上完成。我们先创建一个黑色底色的指定尺寸的图片,我们要使用 imagecreatetruecolor()函数,该函数的语法格式如下:

imagecreatetruecolor(int $width, int $height);  //返回一个图像标识符,代表了一幅大小为 x_size 和 y_size 的黑色图像。

<?php
header("content-type:text/html;charset=utf-8");
header("content-type:image/png");  // 告诉浏览器,这是一张图片,图片的格式是png
$image = imagecreatetruecolor(200, 100);  //创建一个 400*300 的图片
imagepng($image);  /生成图片
imagedestroy($image);  //销毁图片,释放内存
?>

TIPS

  1. header的作用是用来告知浏览器:虽然请求的是.php后缀的文件,但是返回的文件不是HTML而是一个PNG的图片;
  2. imagepng用来将生成图片以PNG的数据格式输出给浏览器;
  3. imagedestroy用来最终释放掉创建的图片资源;
  4. 如果调用生成的图片, 直接把php生成的图片当成图片调用即可。

创建颜色

创建颜色我们这里就要使用一个函数 imagecolorallocate(),首先我们来看下该函数的语法格式:

imagecolorallocate(resource $image, int $red, int $green, int $blue);

<?php
header("content-type:text/html;charset=utf-8");
header('content-type: image/png');  //告诉浏览器,这个文件,是一个png图片
$image=imagecreatetruecolor(300, 300);  //创建图像
$red=imagecolorallocate($image, 255, 0, 0);  //设置颜色 - ps里的选择画笔颜色
imagepng ( $image );  //生成图片
imagedestroy ( $image );  //销毁图片, 释放内存
?>

填充颜色

imagefill(resource $image, int $x, int $y, int $color);

<?php
header("content-type:text/html;charset=utf-8");
header('content-type: image/png');  //告诉浏览器,这个文件,是一个png图片
$image=imagecreatetruecolor(300, 300);  //创建图像
$red=imagecolorallocate($image, 255, 0, 0);  //设置颜色 - ps里的选择画笔颜色
imagefill ( $image ,  0 ,   0 ,  $red );  //填充颜色 - ps里的点击画布填色
imagepng ( $image );  //生成图片
imagedestroy ( $image );  //销毁图片, 释放内存
?>