本文实例讲述了php基于gd库的图像处理方法。分享给大家供大家参考,具体如下:
gd图像处理技术
extension=php_gd2.dll
创建画布
画布,一种资源型数据,可操作的图像资源
创建画布(新建)
imagecreate(width,height) //创建基于调色板的画布
imagecreatetruecolor(width,height) //创建真彩色的画布
基于图片创建画布(打开)
imagecreatefromjpeg( url)
imagecreatefrompng(url)
imagecreatefromgif(url)
操作画布
分配颜色:如果需要在画布上使用某种颜色,应该先将颜色分配到画布上。
(颜色标识 )= imagecolorallocate(img,r,g,b)
填充画布
imagefill(img,x,y,颜色标识)
输出画布
1. 输出到图片文件
2. 直接输出,需要告知浏览器输出为图片信息(header("content-type:image/png;"))
1
2
3
|
imagepng(img[,url])
imagejpeg()
imagegif()
|
销毁画布资源
imagedestroy(img)
1
2
3
4
5
6
7
8
|
<?php
header( 'content-type:image/png' );
$img = imagecreate(300,300);
$color = imagecolorallocate( $img ,223,22,44);
imagefill( $img ,3,3, $color );
imagepng( $img );
imagedestroy();
?>
|
运行效果图如下:
验证码实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<?php
header( 'content-type:image/png' );
$code = '123456789abcdefghijklmnpqrstuvwxvz' ;
$length = strlen ( $code );
$print = '' ;
for ( $i =0; $i <4; $i ++){
$print .= $code [mt_rand(0, $length -1)];
}
// echo $print;
$img = imagecreatefrompng( './str.png' );
$color = mt_rand(0,1)==1?imagecolorallocate( $img ,0,0,0):imagecolorallocate( $img ,255,255,255);
//图片大小
$img_width = imagesx( $img );
$img_height = imagesy( $img );
//字体大小
$font = 5;
$font_width = imagefontwidth( $font );
$font_height = imagefontheight( $font );
$fin_w = ( $img_width - $font_width *4)/2;
$fin_h = ( $img_height - $font_height )/2;
imagestring( $img , $font , $fin_w , $fin_h , $print , $color );
imagepng( $img );
imagedestroy( $img );
?>
<image src= "gd_string.php" onclick= "this.src='gd_string.php?ra='+math.random()" ></image>
|
运行效果图如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php
session_start();
$im =imagecreatetruecolor(80,30);
$str = "" ;
for ( $i =0; $i <4; $i ++){
$str .= dechex (rand(0,15));
}
$_session [ 'code' ]= $str ;
$white =imagecolorallocate( $im ,255,255,255);
imagestring( $im ,rand(2,5),rand(0,70),rand(0,10), $str , $white );
//imagettftext($im,rand(0,5),rand(0,180),rand(0,100),rand(0,10),$white,"simhei.ttf",$str);
for ( $i =0; $i <20; $i ++){
$color =imagecolorallocate( $im ,rand(0,255),rand(0,255),rand(0,255));
imageline( $im ,rand(0,90),rand(0,20),rand(0,100),rand(0,100), $color );
}
header( "content-type:image/png" );
imagepng( $im );
imagedestroy( $im );
?>
|
注意:图片输出前后不能有额外输出
希望本文所述对大家php程序设计有所帮助。