一,生成验证码:
1、生成一张图片;
recource imagecreatetruecolor(int $width , int $height)
注意:提前输出图片的header信息,默认是黑色背景/
2、header (‘content-type:image/png');
3、 生成白色底图颜色:
$bgcolor = imagecolorallocate($image,255,255,255);
4、填充底图:
imagefill($image,0,0,$bgcolor);
5、取随机数字在底图上生成
for($i=0;$i<4;$i++)
{
$fontsize = 6;
$fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
$fontcontent = rand(0,9);
$x = ($i*100/4)+rand(5,10);
$y = rand(5,10);
imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
}
6、加干扰点
for($i=0;$i<200;$i++)
{
$pointcolor = imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200));
imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);
}
7、加干扰线
for($i=0;$i<3;$i++)
{
$linecolor = imagecolorallocate($image, rand(50,100), rand(50,100), rand(50,100));
imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$pointcolor);
}
8、生成imagepng($image);
9、imagedestroy($image);销毁
10、生成事件字母与数字
$data="abckhsASDSDADFASodSDASDASfijo123456789";
$fontcontent = substr($data,rand(0,strlen($data)),1);
11、生成随机字体
$str="是电话费是丹佛我说的哈佛还是东方红";
$strdb=str_split($str,3);
for($i=0;$i<4;$i++)
{
$fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
$index=rand(0,count($strdb));
$cn=$strdb[$index];
$fontface='simhei.ttf';
imagettftext($image,mt_rand(20,24),mt_rand(-60,60),(40*$i+20),mt_rand(20,50),$fontcolor,$fontface,$cn);
}
二、图片加字体水印和处理缩略图
打开图片
1、配置图片路径
$src='123.jpg';
2、获取图片信息
$info = getimagesize($src);
3、通过图像的编号来获取图像的类型
$type=image_type_to_extension($info[2],false);
4、在内存中创建一个和图像一样的图像
$fun = "imagecreatefrom($type):;
5、把图片复制到我们的内存中
$image = $fun($src);
操作图片
1、设置字体路径
$font = "msyh.ttf";
2、设置我们的水印内容
$content = "你好“;
3、设置字体的颜色和透明度
$color = imagecolorallcatealpha($image,255,255,255,59);
4、写入文字
imagettftext($image,20,0,20,30,$color,$font,$content)
输出图片
1、浏览器输出
header("Content-type:"$info['mime']);
$func = "image{$type}";
func($image);
保存图片
$func($image,'newimage'.$type);
销毁图片
imagedestory($image );
三、给图片加图片水印
打开图片
1、配置图片路径
2、配置图片基本信息
3、通过图片编号来获取图片的类型
4、在内存中创建一个图片一样的图片
5、把图片复制到内存中
操作图片
1、设置水印的路径
2、配置水印 基本信息
3、通过水印 编号来获取图片的类型
4、在内存中创建一个水印 一样的图片
5、把水印 复制到内存中
6、合并水印和图片
imagecopymerge($image,$water,20,30,0,0,$info1[0],$info1[1],80);
7、销存水印图片
imagedestroy($water);
输出图片
1在浏览器输出
header("content-type:",$info['mime']);
$funs="image{$type}";
$funs($image);
2、保存在本地磁盘
$funs($image,'imageMark.'.$type);
销毁图片
imagedestroy($image);
四、缩放图片
1、在内存中建立一个真色彩的图片,承载体;
$image_thumb = imagecreatetruecolor(300,200);
2、核心步,将原图复制到新建的真色彩图片上,并且按照一定比例压缩
imagecopyresampled($image_thumb,$image,0,0,0,0,300,200,$info[0],$info[1]);
3、销毁原始图片
imagedestroy($image);