前言
学习矢量图片(验证码),报表的绘制,生成。
正文
步骤
创建画布
会只需要的各种图形(圆,直线,矩形,弧线,扇形)
输出图像到网页,也可以另存
销毁图片(释放内存)
图片格式
gif 图片压缩率高,
但是只能显示256色可能造成颜色丢失,但可以显示动画
jpg/jpeg 图片的压缩率高,可以用较小的文件来显示
网页上用的比较多
png,高仿真
综合了gif和jpg的优势,但是不能显示动画
快速入门
创建画布
$img = imagecreatetruecolor(100,100);
取色
$red = imagecolorallocate($img, 255, 0, 0);
画图
•imagefilledarc — 画一椭圆弧且填充
•imagefilledellipse — 画一椭圆并填充
•imagefilledpolygon — 画一多边形并填充
•imagefilledrectangle — 画一矩形并填充
输出到浏览器
header("content-type: image/png");
imagepng($img);
销毁
imagedestroy($img);
图片到画布
$srcImage = imagecreatefromgif(filename);
$srcImage_info = getimagesize(filename);
imagecopy(dst_im, src_im, dst_x, dst_y,
src_x, src_y, src_w, src_h);
具体参数含义 不懂看文档
写字
imagettftext(image, size, angle, x, y,
color, fontfile, text)
生成验证码
<?php
/**
* Created by PhpStorm.
* User: draymonder
* Date: 2018/3/1
* Time: 15:15
*/
$checkcode ="";
for($i=0;$i<4;$i++){
$checkcode.= dechex(rand(0,15));
}
$img = imagecreatetruecolor(200,30);
//背景颜色
$bgcolor = imagecolorallocate($img,0,0,0);
imagefill($img,0,0,$bgcolor);
//添加干扰线
for($i=0;$i<10;$i++){
$color = imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255));
imageline($img,rand(0,200),rand(0,30),rand(0,200),rand(0,30),$color);
}
//白色,字体颜色
$white = imagecolorallocate($img,255,255,255);
//添加字符串
imagestring($img,rand(4,6),rand(0,180),rand(0,20),$checkcode,$white);
header("content-type: image/png");
imagepng($img);
imagedestroy($img);
?>
后记
从现在开始,一切都还不晚!前半生与后半生的分界线是在哪里?
答:此时此刻。