zoukankan      html  css  js  c++  java
  • php 基础复习(2)GD库

    一,生成验证码:
    1、生成一张图片;
    recource imagecreatetruecolor(int $width , int $height) 
    注意:提前输出图片的header信息,默认是黑色背景/
    2、header (‘content-type:image/png');
    3、 生成白色底图颜色:
    $bgcolor = imagecolorallocate($image,255,255,255);
    4、填充底图:
    imagefill($image,0,0,$bgcolor);
    5、取随机数字在底图上生成
    for($i=0;$i<4;$i++)
    {
         $fontsize = 6;
         $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
         $fontcontent = rand(0,9);
         $x = ($i*100/4)+rand(5,10);
         $y = rand(5,10);
         imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);
    }
    6、加干扰点
    for($i=0;$i<200;$i++)
    {
        $pointcolor = imagecolorallocate($image, rand(50,200), rand(50,200), rand(50,200));
        imagesetpixel($image,rand(1,99),rand(1,29),$pointcolor);
    }
    7、加干扰线
    for($i=0;$i<3;$i++)
    {
        $linecolor = imagecolorallocate($image, rand(50,100), rand(50,100), rand(50,100));
        imageline($image,rand(1,99),rand(1,29),rand(1,99),rand(1,29),$pointcolor);
    }
    8、生成imagepng($image);
    9、imagedestroy($image);销毁
    10、生成事件字母与数字
    $data="abckhsASDSDADFASodSDASDASfijo123456789";
    $fontcontent = substr($data,rand(0,strlen($data)),1);
    11、生成随机字体
    $str="是电话费是丹佛我说的哈佛还是东方红";
    $strdb=str_split($str,3);
    for($i=0;$i<4;$i++)
    {
         $fontcolor = imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120));
         $index=rand(0,count($strdb));
         $cn=$strdb[$index];
         $fontface='simhei.ttf';
         imagettftext($image,mt_rand(20,24),mt_rand(-60,60),(40*$i+20),mt_rand(20,50),$fontcolor,$fontface,$cn);
    }
    二、图片加字体水印和处理缩略图
     
    打开图片
    1、配置图片路径
    $src='123.jpg';
    2、获取图片信息
    $info = getimagesize($src);
    3、通过图像的编号来获取图像的类型
    $type=image_type_to_extension($info[2],false);
    4、在内存中创建一个和图像一样的图像
    $fun = "imagecreatefrom($type):;
    5、把图片复制到我们的内存中
    $image = $fun($src);
     
    操作图片
     
    1、设置字体路径
    $font = "msyh.ttf";
    2、设置我们的水印内容
    $content = "你好“;
    3、设置字体的颜色和透明度
    $color = imagecolorallcatealpha($image,255,255,255,59);
    4、写入文字
    imagettftext($image,20,0,20,30,$color,$font,$content)
    输出图片
    1、浏览器输出
    header("Content-type:"$info['mime']);
    $func = "image{$type}";
    func($image);
    保存图片
    $func($image,'newimage'.$type);
    销毁图片
    imagedestory($image );
     
    三、给图片加图片水印
    打开图片
     1、配置图片路径
    2、配置图片基本信息
    3、通过图片编号来获取图片的类型
    4、在内存中创建一个图片一样的图片
    5、把图片复制到内存中
    操作图片
    1、设置水印的路径
    2、配置水印 基本信息
    3、通过水印 编号来获取图片的类型
    4、在内存中创建一个水印 一样的图片
    5、把水印 复制到内存中
    6、合并水印和图片
    imagecopymerge($image,$water,20,30,0,0,$info1[0],$info1[1],80);
    7、销存水印图片
    imagedestroy($water);
    输出图片
    1在浏览器输出
    header("content-type:",$info['mime']);
    $funs="image{$type}";
    $funs($image);
    2、保存在本地磁盘
    $funs($image,'imageMark.'.$type);
    销毁图片
    imagedestroy($image);
     
    四、缩放图片
    1、在内存中建立一个真色彩的图片,承载体;
    $image_thumb = imagecreatetruecolor(300,200);
    2、核心步,将原图复制到新建的真色彩图片上,并且按照一定比例压缩
    imagecopyresampled($image_thumb,$image,0,0,0,0,300,200,$info[0],$info[1]);
    3、销毁原始图片
    imagedestroy($image);
  • 相关阅读:
    marMariaDB & MYSQL flexviews
    tomcat与resin的比较
    nginx 1.4.3能直接升到1.8.1吗
    Docker Compose vs. Dockerfile
    分布式事务 spring 两阶段提交 tcc
    linux下拷贝整个目录
    MySQL :: Fatal error: Can&#039;t change to run as user &#039;mysql&#039;. Please check that the user exists!
    python Drools
    KubeCon CloudNativeCon China 2019
    在mysql中修改表名的sql语句
  • 原文地址:https://www.cnblogs.com/chenjinxinlove/p/5229090.html
Copyright © 2011-2022 走看看