-
-
//准备画布
- $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();随机取一个数字
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
imagesetpixel($im,mt_rand(0,500),mt_rand(0,300),$white);
}
- //产生随机的线
for ($j=0; $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 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.php//用来验证验证码是否正确
-
-
session_start();
- // echo $_POST['username'];
- // echo $_POST['password'];
- $code = strtolower($_POST['vcode']);
// echo $code;
-
// echo "
"; Salin selepas log masuk Salin selepas log masuk
- // print_r($_SESSION);
- // echo "";
- $vstr = strtolower($_SESSION['vstr']);
if ($code==$vstr) {
- //实现页面的跳转
- echo "<script>location='http://www.xingzuo51.com'</script>";
- }else{
- echo "<script>alert('验证码输入错误')</script>";
- //echo "返回注册页面";
- echo "<script>location='index.php'</script>";
}
- ?>
-
复制代码
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 "
"; Salin selepas log masuk Salin selepas log masuk
- 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);
- ?>
-
复制代码
|