配置
<?php
header("content-type:text/html;charset=utf-8");
var_dump(extension_loaded('gd'));
var_dump(function_exists('gd_info'));
var_dump(gd_info());
print_r(get_defined_functions());
绘图基本步骤
<?php
$image = imagecreatetruecolor(500, 300);
$red = imagecolorallocate($image, 255, 0, 0);
$blue = imagecolorallocate($image, 0, 0, 255);
imagechar($image, 5, 30, 50, 'H', $red);
imagestring($image, 18, 100, 120, 'still', $blue);
header("content-type:image/png");
imagepng($image);
imagepng($image, 'images/demo.png');
imagedestroy($image);
美化图像
$randColor = imagecolorallocate($image, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
imagefilledrectangle($image, 0, 0, 500, 500, $white);
imagettftext($image, 28, 30, 50, 280, $randColor, 'C:\study\gd\fonts\consola.ttf', 'This is a show');
imagettftext($image, 22, 0, 300, 120, $randColor, 'C:\website-study\gd\PALSCRI.TTF', 'HanyStill');
验证码绘制案例
生成验证码【字符串函数】
switch ($type) {
case 1:
$code = implode(array_rand(range(0, 9), $length));
break;
case 2:
$arr = array_flip(array_merge(range('a', 'z'), range('A', 'Z'));
$code = implode(array_rand($arr, $length));
break;
case 3:
$arr = array_flip(array_merge(range(0, 9), range('a', 'z'), range('A', 'Z'));
$code = implode(array_rand($arr, $length));
break;
case 4:
$str = "在,中,国,共,产,党,的,领,导,下,人,民,生,活,会,更,加,美,好,因,为,力,量,拧,成,一,股,绳,
困,难,和,险,阻,也,击,垮,不,了,我,们,最,后,衷,心,祝,愿,祖,国,繁,荣,昌,盛";
$code = implode(array_rand(array_flip(explode(',', $str)), $length));
break;
default:
exit('非法参数');
break;
}
绘制验证码
$textwidth = imagefontwidth(28);
$textheight = imagefontheight(28);
for($i=0; $i<$length; $i++){
$size = mt_rand(20,28);
$angle = mt_rand(-15, 15);
$x = 15+45*$i+mt_rand(0,36);
$y = $textheight/1.5;
$text = mb_substr($string, $i, 1, 'utf-8');
imagettftext($image, $size, $angle, $x, $y, getRandColor($image), $fontFile, $text);
}
给验证码添加干扰元素
for($i=0; $i<50; $i++){
imagesetpixel($image, mt_rand(0,$width), mt_rand(0,$height), getRandColor($image))