首页 > 代码库 > php基础之gd图像生成、缩放、logo水印和简单验证码实现

php基础之gd图像生成、缩放、logo水印和简单验证码实现

php基础之gd图像生成、缩放、logo水印和简单验证码实现

阅读目录

  • 图像生成
  • 缩略图
  • 水印生成
  • 验证码

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

php基础之gd图像生成、缩放、logo水印和简单验证码实现