目录
一、开启GD2图像处理
GD2是一个三方插件,PHP动态地加载这个插件后GD2会作为一个资源来被PHP调用,PHP默认是没有开启的,我们要手动开启。
二、创建图像的大致步骤
- 创建一个画布。
- 绘制图像,分配颜色,写入文字等。
- 输出图像,在浏览器中显示或者保存成文件。
- 释放图片的资源。
三、创建画布
1.基于已知图像:
描述:由文件或者url创建一个新的图像。
语法:resource imagecreatefromjpeg(string $filename)。
参数:$filename是指定的图像文件。
返回值:创建成功返回资源值,失败返回false。
注意:imagecreatefrompng()和imagecreatefromgif()用法一样。
2.空画布:
①创建真彩色画布:
描述:新建一个真彩色的图像。
语法:resource imagecreatetruecolor(int $width,int $height)。
参数:$width:画布的宽度,$height:画布的高度。
②创建基于windows调色板的画布:
描述:新建一个基于调色板的画布。
语法:resource imagecreate(int $x_size,int $y_size)。
参数:$x_size:画布的宽度,$y_size:画布的高度。
③输出图像,释放销毁图像:
Imagejpeg/imagepng/imagegif($img) imagedestroy($img)
$img是创建的画布。
④为图像分配颜色(调色):
描述:为一副图像分配颜色
语法:int imagecolorallocate($resource $img,int $red);
参数:$img:画布,$red:数字类型的颜色。
⑤水平画一行字符串:
描述:水平画一行字符串。
语法:bool imagestring(resource $img,int $font,int $x,int $y,string $s,int $col)。
参数:$img:画布,$font:文字的大小,$x,$y:字符串的起点坐标,$s:代表要写入的字符串,$col:字符串的颜色。
⑥取得画布的宽度和高度:
描述:取得图像的宽度和高度。
语法:int imagex($img) int imagey($img)。
参数:$img就是画布。
⑦取得字体的宽度和高度:
描述:取得字体的宽度和高度。
语法:int imagefontwidth(int $font); int imagefontwidth(int $font)。
参数: $font:就是字号的数值。
四、举例之让文本居于图像的正中
在图像上写入一行TTF字体的文本:
描述:用ttf字体向图像写入文本
语法:arrary imagegettftext(rwaouexw $img, float size,float $angle,int $x,int $y,int $color,string $fontfile, string $text);
参数:$img:画布,$size:字号的大小,可以是中文字号,$angle旋转角度,$x,$y:写入字符串的坐标,$color:字符串的颜色,$fontfile:字体文件,可以是中文字体,$text:要写入的字符串。
获得图像的相关信息:
描述:获得图像的相关信息
语法:array getimagesize(string $filename);
返回:返回一个索引数组
下标0:图像的宽度
下标1:图像的高度
下标2:图像的类型,其中值1是gif,值2是jpg,值3是png
给图像分配颜色,并带上透明度:
描述:为一幅图像分配颜色带上透明度
语法:int imagecolorallocatealpha(resource $img,int $red,int $alpha);
参数:$img:画布,$red:代表数值类型的颜色,$alpha:代表透明度。取值0-127之间,127代表完全透明。
五、举例之制作图像水印效果
六、举例之制作验证码
<?php
header("Content-Type:text/html");
$fontfile="./msyh.ttf";
$imgWidth=0;
$imgHeight=0;
$fontWidth=0;
$fontHeight=0;
$fontsize=18;
$str='';
$arr_list=array_merge(range('A','Z'),range(0,9));
shuffle($arr_list);
$arr_index=array_rand($arr_list,4);
shuffle($arr_index);
foreach($arr_index as $value){
$str .=$arr_list[$value];
}
session_start();
$_SESSION['yanzhengma']=$str;
$filename='./yanzhengma.png';
$img=imagecreatefrompng($filename);
$yellow=imagecolorallocate($img,0,0,255);
imagettftext($img,$fontsize,0,18,25,$yellow,$fontfile,$str);
header('Content-Type:image/png');
imagepng($img);
imagedestroy($img);
?>