//准备画布 - $im = imagecreatetruecolor(500, 300);
//准备涂料 - $black = imagecolorallocate($im, 0, 0, 0);
$white = imagecolorallocate($im, 255, 255, 255); //背景填充成黑色 - imagefill($im,0,0, $black);
//画一个矩形,填充成白色 - imagefilledellipse($im, 258, 151, 200, 200, $white);
- //输出到浏览器或保存起来
- header("content-type:image/png");
- //输出图片
- imagepng($im);
//关闭画布 - imagedestroy($im);
- ?>
php图片处理函数
1,数学函数
2,图片处理函数
数学函数:
1,max();
2,min();
3,mt_rand();随机取一个数字
- echomt_rand(1,5);
- ?>
mt_rand随机取一个值
//随机从一个数组中取一个值 - $arr = array("a","b","c","d","e");
$rkey = mt_rand(0,count($arr)-1); echo $arr[$rkey]; - ?>
4.ceil();天花板
5.floor();
6.round();四舍五入
echo ceil(2.4);//3 - echo floor(2.4);//2
- echo round(2.4);//2
- echo round(2.6);//3
?>
6.pi(); //π 取圆周率
- echo(pi());
- echo M_PI;
- ?>
图片处理函数使用场景
1.验证码
2.缩放
3.裁剪
4.水印
php中穿件图像的五个步骤
1.准备画布
2.准备涂料
3.在画布上画图像或者文字
4.输出最终图像或曹村最终图像
5.释放画布资源
例子:
//1.准备画布 - $im = imagecreatetruecolor(500,300);
- //2.准备涂料
- $black = imagecolorallocate($im, 0, 0, 0);
- $white = imagecolorallocate($im, 255, 255, 255);
//3.在画布上画图像或者文字 - //如果不填充背景,默认是黑色
- imageellipse($im,258,151,200,200,$white);
//4.输出最终图像或保存最终图像 - header("content-type:image/png");
- imagepng($im);
- //5.释放画布资源
- imagedestroy($im);
- ?>
绘制图像:
imagefill();
imagesetpixel();//画像素点
imageline();//画线
imagerectangle();//画一个矩形
imagepolygon();//画一个多边形
imageellipse();//画一个椭圆
imageare();画一个圆弧
imagechar();//水平的画一个字符
imagestring();//水平的画一行字符串
例子:
//画线 - //1.准备画布
- $im = imagecreatetruecolor(500,300);
- //2.准备涂料
- $black = imagecolorallocate($im, 0, 0, 0);
- $white = imagecolorallocate($im, 255, 255, 255);
//3.在画布上画图像或者文字 - //如果不填充背景,默认是黑色
- imageline($im,0,0,500,300,$white);
- imageline($im,0,300,500,0,$white);
- imageline($im,0,150,500,150,$white);
- imageline($im,250,0,250,300,$white);
//4.输出最终图像或保存最终图像 - header("content-type:image/png");
- imagepng($im);
- //5.释放画布资源
- imagedestroy($im);
- ?>
例子:
//添加干扰素 - //1.准备画布
- $im = imagecreatetruecolor(500,300);
- //2.准备涂料
- $black = imagecolorallocate($im, 0, 0, 0);
- $white = imagecolorallocate($im, 255, 255, 255);
//3.在画布上画图像或者文字 - //产生随机的点
- for ($i=0; $i < 1000; $i++) {
imagesetpixel($im,mt_rand(0,500),mt_rand(0,300),$white); } - //产生随机的线
for ($j=0; $j < 100; $j++) { - imageline($im, mt_rand(0,500), mt_rand(0,300), mt_rand(0,500), mt_rand(0,300), $white);
- }//4.输出最终图像或保存最终图像
- header("content-type:image/png");
- imagepng($im);
- //5.释放画布资源
- imagedestroy($im);
- ?>
例子:
//画矩形: - //1.准备画布
- $im = imagecreatetruecolor(500,300);
- //2.准备涂料
- $black = imagecolorallocate($im, 0, 0, 0);
- $white = imagecolorallocate($im, 255, 255, 255);
//3.在画布上画图像或者文字 - imagerectangle($im, 20, 20, 480, 280, $white);//
- imagefilledrectangle($im, 20, 20, 480, 280, $white);//填充
//4.输出最终图像或保存最终图像 - header("content-type:image/png");
- imagepng($im);
- //5.释放画布资源
- imagedestroy($im);
- ?>
例子:
//imagepolygon 画多边形_画三角形 - //1.准备画布
- $im = imagecreatetruecolor(500,300);
- //2.准备涂料
- $black = imagecolorallocate($im, 0, 0, 0);
- $white = imagecolorallocate($im, 255, 255, 255);
//3.在画布上画图像或者文字 - $arr = array(
- 250,20,
- 60,240,
- 440,240
- );
- imagepolygon($im, $arr, 3, $white);
//4.输出最终图像或保存最终图像 - header("content-type:image/png");
- imagepng($im);
- //5.释放画布资源
- imagedestroy($im);
- ?>
例子,画一个3D饼状图
//1.准备画布 - $im = imagecreatetruecolor(500,300);
- //2.准备涂料
- $black = imagecolorallocate($im, 0, 0, 0);
- $red = imagecolorallocate($im, 255, 0, 0);
- $grayred = imagecolorallocate($im, 255, 100, 100);
- $green = imagecolorallocate($im, 0, 255, 0);
- $blue = imagecolorallocate($im, 0, 0, 255);
- $gray = imagecolorallocate($im, 200, 200, 200);
- $white = imagecolorallocate($im, 255, 255, 255);
//3.在画布上画图像或者文字 - for ($i=0; $i < 10; $i++) {
- imagefilledarc($im, 250, 150+$i, 200, 200, 0, 70, $gray,IMG_ARC_PIE);
- imagefilledarc($im, 250, 150+$i, 200, 200, 70, 190, $grayred,IMG_ARC_PIE);
- imagefilledarc($im, 250, 150+$i, 200, 200, 190, 270, $green,IMG_ARC_PIE);
- imagefilledarc($im, 250, 150+$i, 200, 200, 270, 360, $blue,IMG_ARC_PIE);
} - imagefilledarc($im, 250, 150, 200, 200, 0, 70, $white,IMG_ARC_PIE);
- imagefilledarc($im, 250, 150, 200, 200, 70, 190, $red,IMG_ARC_PIE);
- imagefilledarc($im, 250, 150, 200, 200, 190, 270, $green,IMG_ARC_PIE);
- imagefilledarc($im, 250, 150, 200, 200, 270, 360, $blue,IMG_ARC_PIE);
//4.输出最终图像或保存最终图像 - header("content-type:image/png");
- imagepng($im);
- //5.释放画布资源
- imagedestroy($im);
- ?>
例子:
//写文字: - //1.准备画布
- $im = imagecreatetruecolor(500,300);
- //2.准备涂料
- $black = imagecolorallocate($im, 0, 0, 0);
- $red = imagecolorallocate($im, 255, 0, 0);
- $grayred = imagecolorallocate($im, 255, 100, 100);
- $green = imagecolorallocate($im, 0, 255, 0);
- $blue = imagecolorallocate($im, 0, 0, 255);
- $gray = imagecolorallocate($im, 200, 200, 200);
- $white = imagecolorallocate($im, 255, 255, 255);
//3.在画布上画图像或者文字 $str= "PHP is very much"; imagestring($im, 5, 260, 160, $str, $green); - //4.输出最终图像或保存最终图像
- header("content-type:image/png");
- imagepng($im);
- //5.释放画布资源
- imagedestroy($im);
- ?>
例子:
//写单个字符: - //1.准备画布
- $im = imagecreatetruecolor(500,300);
- //2.准备涂料
- $black = imagecolorallocate($im, 0, 0, 0);
- $red = imagecolorallocate($im, 255, 0, 0);
- $grayred = imagecolorallocate($im, 255, 100, 100);
- $green = imagecolorallocate($im, 0, 255, 0);
- $blue = imagecolorallocate($im, 0, 0, 255);
- $gray = imagecolorallocate($im, 200, 200, 200);
- $white = imagecolorallocate($im, 255, 255, 255);
//3.在画布上画图像或者文字 $str= "P"; imagechar($im, 5, 260, 160, $str, $green); - //4.输出最终图像或保存最终图像
- header("content-type:image/png");
- imagepng($im);
- //5.释放画布资源
- imagedestroy($im);
- ?>
例子,
//在图片上面写字 - //1.准备画布
- $im = imagecreatetruecolor(500,300);
- //2.准备涂料
- $black = imagecolorallocate($im, 0, 0, 0);
- $red = imagecolorallocate($im, 255, 0, 0);
- $grayred = imagecolorallocate($im, 255, 100, 100);
- $green = imagecolorallocate($im, 0, 255, 0);
- $blue = imagecolorallocate($im, 0, 0, 255);
- $gray = imagecolorallocate($im, 200, 200, 200);
- $white = imagecolorallocate($im, 255, 255, 255);
//3.在画布上画图像或者文字 $str= "junzaivip"; - $file = "E:/PHP/fonts/SIMYOU.TTF";
- // $file = "fonts/SIMYOU.TTF";
imagettftext($im, 50, 0, 100, 200, $green, $file, $str); //4.输出最终图像或保存最终图像 - header("content-type:image/png");
- imagepng($im);
- //5.释放画布资源
- imagedestroy($im);
- ?>
PHP 验证码的设计
//准备画布 - $im = imagecreatetruecolor(100,50);
- //准备涂料
- $black = imagecolorallocate($im, 0, 0, 0);
- $gray = imagecolorallocate($im, 200, 200, 200);
//填充背景 - imagefill($im, 0, 0, $gray);
//文字坐标 - $x = (100-4*20)/2 + 6;
- $y = (50-20)/2 + 20;
//在画布上画图像或者文字 //把三个数组联系起来 - $strarr = array_merge(range(1, 9),range(a, z),range(A, Z));
//打乱数组 - shuffle($strarr);
//array_slice:取数组的前几位 - //Join 将数组变成字符串,并且以第一个变量做分隔符
- $str = join('',array_slice($strarr, 0,4));
$file = "E:/PHP/fonts/msyh.ttf"; - // $file = "fonts/msyh.ttf";
imagettftext($im, 20, 0, $x, $y, $black, $file, $str); //输出最终图像或保存最终图像 - header("content-type:image/png");
- imagepng($im);
- //释放画布资源
- imagedestroy($im);
- ?>
-
php验证码设计:这里涉及到两个页面:index.php & reg.php
说明:
这个验证码版本只实现了验证图片的动态获取
前台注册页面的验证码和生成图片的验证码进行比较
验证码是由数字 小写字母 大写字母 随机组成
index.php//实现用户的注册
-
- reg
-
-
-
用户注册页面 -
-
reg.php//用来验证验证码是否正确
session_start(); - // echo $_POST['username'];
- // echo $_POST['password'];
- $code = strtolower($_POST['vcode']);
// echo $code; // echo " "; - // print_r($_SESSION);
- // echo "";
- $vstr = strtolower($_SESSION['vstr']);
if ($code==$vstr) { - //实现页面的跳转
- echo "";
- }else{
- echo "";
- //echo "返回注册页面";
- echo "";
} - ?>
auth.php 用来生成验证码
//开启session,开启session之前,不能有任何输出 - session_start();
- $width = 50;//验证码背景宽度
- $height = 26;//验证码背景高速
- $fonttype = 10;//验证码中字的大小
- //准备画布
- $im = imagecreatetruecolor($width,$height);
- //准备涂料
- $black = imagecolorallocate($im, 0, 0, 0);
- $gray = imagecolorallocate($im, 200, 200, 200);
//填充背景 - imagefill($im, 0, 0, $gray);
//文字坐标 - $x = ($width-4*$fonttype)/2 +2;
- $y = ($height-$fonttype)/2 + $fonttype;
//在画布上画图像或者文字 //把三个数组联系起来 - $strarr = array_merge(range(1, 9),range(a, z),range(A, Z));
//打乱数组 - shuffle($strarr);
//array_slice:取数组的前几位 - //Join 将数组变成字符串,并且以第一个变量做分隔符
- $str = join('',array_slice($strarr, 0,4));
//把$str放入session中,可方便所有页面使用 - $_SESSION['vstr'] = $str;
$file = "E:/PHP/fonts/msyh.ttf"; - // $file = "fonts/msyh.ttf";
imagettftext($im, $fonttype, 0, $x, $y, $black, $file, $str); //输出最终图像或保存最终图像 - header("content-type:image/png");
- imagepng($im);
- //释放画布资源
- imagedestroy($im);
- ?>
-
php验证码设计:
页面跳转:
1,php跳转
$im = imagecreatefromjpeg("lyf.jpg"); $x = imagesx($im); - $y = imagesy($im);
echo $x . $y; - exit;
header("content-type:image/jpeg"); - imagejpeg($im);
- ?>
方法二获取图片的大小:
$imgfile = "lyf.jpg"; $imgarr = getimagesize($imgfile); echo " "; - print_r($imgarr);
- echo "";
exit; $im = imagecreatefromjpeg("lyf.jpg"); echo $x . $y; header("content-type:image/jpeg"); - imagejpeg($im);
- ?>
图片缩放函数:
$imgfile = "lyf.jpg"; //为了得到大图的宽高 - $imgarr = getimagesize($imgfile);
$maxw = $imgarr[0]; - $maxh = $imgarr[1];
- $maxt = $imgarr[2];
- $maxm = $imgarr['mime'];
//为了把大图变为资源 $im = imagecreatefromjpeg("lyf.jpg"); //小图资源 - $minw = 100;
- $minh = 400;
- //等比例缩放
- if (($minw/$maxw)>($minh/$maxh)) {
- $rate = $minh/$maxh ;
- }else{
- $rate = $minw / $maxw ;
- }
$minw = floor($maxw * $rate); - $minh = floor($maxh * $rate);
- $minim = imagecreatetruecolor($minw, $minh);
//把大图缩放成小图 - imagecopyresampled($minim, $im, 0, 0, 0, 0, $minw, $minh, $maxw, $maxh);
//小图输出 - header("content-type:{$maxm}");
//判断类型 - switch ($maxt) {
- case 1:
- $imageout = "imagegif";
- break;
- case 2:
- $imageout = "imagejpeg";
- break;
- case 3:
- $imageout = "imagepng";
- break;
} $imageout($minim); - $minfilename = "s_".$imgfile;
- $imageout($minim,$minfilename);
- // imagejpeg($im);
- //释放资源
- imagedestroy($maxim);
- imagedestroy($minim);
- ?>
图片裁剪函数:
imagecopyresampled();
图片水印函数:
imagecopy();
3,裁剪
4,水印
$maxim = imagecreatefromjpeg("lyf.jpg"); - $minim = imagecreatefromjpeg("lyf.jpg");
$maxw = imagesx($maxim); - $maxh = imagesy($maxim);
$minw = imagesx($minim); - $minh = imagesy($minim);
imagecopy($maxim, $minim, $maxw-$minw, $maxh-$minh, 0, 0, $minw, $minh); header("content-type:image/jpeg"); imagejpeg($mamim); - ?>
|