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


?>
posted @ 2016-08-14 17:18  selfim  阅读(5338)  评论(0编辑  收藏  举报