12(PHP图像的制作,例如验证码)

目录

一、开启GD2图像处理

二、创建图像的大致步骤

三、创建画布

1.基于已知图像:

2.空画布:

①创建真彩色画布:

②创建基于windows调色板的画布:

③输出图像,释放销毁图像:

④为图像分配颜色(调色):

⑤水平画一行字符串:

⑥取得画布的宽度和高度:

⑦取得字体的宽度和高度:

四、举例之让文本居于图像的正中

在图像上写入一行TTF字体的文本:

获得图像的相关信息:

给图像分配颜色,并带上透明度:

五、举例之制作图像水印效果

六、举例之制作验证码

材料:

yanzhengma.png:

 msyh.ttf:


一、开启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);
?>

材料:

yanzhengma.png:

 msyh.ttf:

msyh.zip(msyh.ttf)(12(PHP图像的制作,例如验证码)配套一字体)-其它文档类资源-CSDN下载

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值