PHP 绘图技术

前言

学习矢量图片(验证码),报表的绘制,生成。

正文

步骤

创建画布
会只需要的各种图形(圆,直线,矩形,弧线,扇形)
输出图像到网页,也可以另存
销毁图片(释放内存)

图片格式

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);
?>

后记

从现在开始,一切都还不晚!前半生与后半生的分界线是在哪里?
答:此时此刻。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值