码迷,mamicode.com
首页 > Web开发 > 详细

【PHP】使用GD库实现 图像生成、缩放、logo水印和简单验证码

时间:2018-09-04 10:35:10      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:生成   efi   源文件   sample   加水印   shu   空白   使用   lib   

gd库是php最常用的图片处理库之一(另外一个是imagemagick),可以生成图片、验证码、水印、缩略图等等。要使用gd库首先需要开启gd库扩展,

windows系统下需要在php.ini中将extension=php_gd2.dll 前边的分号去掉然后重启web服务器,

linux系统下一般在编译php时已经开启gd库扩展,要是没有开启gd库扩展则需要先编译安装freetype ,jpegsrc,libpng再用phpize安装扩展库进行编译安装。

 

图像生成:

<?php
    /*
     用windows画图板画图
      1.新建空白画布(指定宽高)
      2.创建颜料.(红,r 绿g  蓝b,三原色组成的. 三原色由弱到强各可以选0-255之间)
      3.画线,写字,画图形,填充等
      4.保存/输出图片
      5.销毁画布
     */


    //用gd库来画图,仍是以上5个步骤.
    // 1:造画布,以资源形式返回 imagecreatetruecolor(宽,高);
    $im = imagecreatetruecolor(300,200);


    // 2: 创建颜料 imagecolorallocate(画布, 红,绿,蓝)
    $gray = imagecolorallocate($im,100,100,100);

    // 3: 填充画布
    imagefill($im,0,0,$gray);


    // 4: 保存成图片 imagepng(画布 [, 保存位置 ]),imagejpeg(),imagegif()
    header(content-type:image/jpeg);
    imagepng($im);

    // 5: 销毁画布  销毁画面 imagedestroy(画布) 
    imagedestroy($im);

?>

 

缩率图

<?php 
    /*
    步骤:
     1.打开图片源文件资源
     2.获得源文件的宽高
     3.使用固定的公式计算新的宽高
     4.生成目标图像资源
     5.进行缩放
     6.保存图像
     7.释放资源
     */
    //1.打开图片源文件资源
    $im = imagecreatefromjpeg(./bg.jpg);

    //2.获得源文件的宽高
    $fx = imagesx($im); // 获取宽度
    $fy = imagesy($im); // 获取高度


    //3.使用固定的公式计算新的宽高
    $sx = $fx/2;
    $sy = $fy/2;
    //4.生成目标图像资源
    $small = imagecreatetruecolor($sx,$sy);


    //5.进行缩放
    imagecopyresampled($small,$im,0,0,0,0,$sx,$sy,$fx,$fy);

    //6.保存图像
    if(imagejpeg($small,./sbg.jpg)) {
     echo 保存成功;
    } else {
         echo 保存失败;
    }
    //7.释放资源
    imagedestroy($im);
    imagedestroy($small);

 ?>

 

水印生成

<?php 
    /*
    步骤:
        1.分别创建大小图画布并获取它们的宽高
        2.添加文字水印
        3.执行图片水印处理
        4.输出
        5.销毁画布
     */
    //1.分别创建大小图画布并获取它们的宽高
    $big = imagecreatefromjpeg(./bg.jpg);
    $bx = imagesx($big);
    $by = imagesy($big);

    $small = imagecreatefrompng(./tu.png);
    $sx = imagesx($small);
    $sy = imagesy($small);


    //2.添加水印文字
    $blue = imagecolorallocate($big,0,0,255);
    imagettftext($big,16,0,100,100,$blue,./msyh.ttf,骄傲的少年);

    //3.执行图片水印处理
    imagecopymerge($big,$small,$bx-$sx,0,0,0,$sx,$sy,37);

    //4.输出到浏览器
    header(content-type: image/jpeg);
    imagejpeg($big);

    //5.销毁画布
    imagedestroy($big);
    imagedestroy($small);

    
 ?>

 

验证码

<?php 
    /*
    步骤:
        1.创建画布
        2.造颜料
        3.填充背景颜色
        4.画干扰点
        5.画噪点
        6.写字符串
        7.输出图片
        8.销毁画布
     */
    //1.创建画布
    $im=imagecreatetruecolor(50, 30);

    //2.造颜料
    $gray = imagecolorallocate($im,30,30,30);
    $red = imagecolorallocate($im,255,0,0);
    $blue = imagecolorallocate($im, 100, 255, 255);

    //3.填充背景颜色  
    imagefill($im,0,0,$blue);

    //4.画干扰点
    for ($i=0; $i <4 ; $i++) { 
         imageline($im, rand(0,20),0,100,rand(0,60),$red);
    }

    //5.画噪点   
        for($i=0;$i<100;$i++){   
            imagesetpixel($im,rand(0,50),rand(0,30),$gray);   
        } 

    //6.写字符串
    $str=substr(str_shuffle(ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789),0,4);
    imagestring($im,5,5,5,$str,$red);
    
    //7.输出图片   
        header(content-type:image/png);   
        imagepng($im); 

        //8.销毁画布
        imagedestroy($im);


?>

 

 

在使用过程中。如果只是需要输出图片。可以使用  imagepng() 的第二个参数。比如

imagepng($im,图片存储路径); 

 

 

 

【PHP】使用GD库实现 图像生成、缩放、logo水印和简单验证码

标签:生成   efi   源文件   sample   加水印   shu   空白   使用   lib   

原文地址:https://www.cnblogs.com/richerdyoung/p/9582450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!