PHP 图像处理技术
一、PHP中GD库的使用
(1)创建画布:画布实际上就是在内存中开辟的一块临时区域,用于存储图像的信息
(2)绘制图像:设置图像的颜色、填充点、线、几何图形、文本等
(3)输出图像:完成绘制后,需要将图像以某种格式保存到服务器指定的文件中,或将图像直接输出到浏览器上显示给用户。但在图像输出之前,一定要使用header()函数发送Content-type通知浏览器。
(4)释放资源:图像被输出以后,画布中的内容也不再有用。出于节约系统资源的考虑,需要及时清除画布占用的所有内存资源。
PHP5中GD2函数库已经作为扩展被默认安装,可以通过phpinfo()语句获取GD2函数库的安装信息
1、画布
使用imagecreate()和imagecreatetruecolor()两个函数来创建画布
imagecreate()函数
新建一个基于调色板的图像
imagecreate($width,$height)
imagecreate()函数返回一个图像标识符,表示一幅宽度为$width、高度为$height的空白图像
header('Content-Type:image/png'); // 创建画布 $img = imagecreate(200,200); // 设置颜色 $color = imagecolorrallocate($img,255,0,0); // 输出图片 imagepng($img);
画布的句柄如果不再使用了,可以将这个资源销毁,释放内存与该图像的存储单元。
调用imagedestroy($img)函数来实现
在创建画布时,推荐使用imagecreatetruecolor()函数
2、设置颜色
使用imagecolorallocate()函数和imagefill()函数来实现
imagecolorallocate()函数用来设置颜色,imagefill()函数用来填充颜色
imagecolorallocate()函数返回一个标识符,表示由给定的RGB成分组成的颜色
imagecolorallocate($image, $red, $green,$blue);
$image是画布图像的句柄,imagecolorallocate()函数被调用在$image所代表的图像中;
$red、$green、$blue分别表示颜色的红、绿、蓝成分。
$red、$green、$blue参数是0~255的整数或者十六进制的0x00~0xFF
imagefill()函数用来为图像区域填充颜色
imagefill($image,$x,$y,$color);
imagefill()函数在$image图像上的“$x,$y”(图像左上角为“0,0”)
坐标处用$color颜色执行区域填充(与“$x,$y”坐标点颜色相同且相邻的点都会被填充)
对于用imagecreate()函数创建的图像,第一次调用imagecolorallocate()函数会自动给图像填充背景色
对于imagecreatetruecolor()函数来说,如果使用imagecolorallocate()函数设置了颜色,
还需要使用imagefill()函数进行填充,否则只会显示默认颜色(黑色)
header('Content-Type:image/png'); // 使用imagecreatetruecolor()创建画布 $img = imagecreatetruecolor(200,200); // 设置颜色 $color = imagecolorallocate($img,0,255,0); // 填充颜色 imagefill($img,0,0,$color); // 输出图片 imagepng($img); // 结束图像,释放资源 imagedestroy($img);
3、生成图像
使用imagepng()函数来生成图像,除了imagepng()函数外,还有imagegif()、imagejpeg()和imagewbmp()等函数
(1)imagepng():以PNG格式将图像输出到浏览器或文件。
(2)imagegif():以GIF格式将图像输出到浏览器或文件。
(3)imagejpeg():以JPEG格式将图像输出到浏览器或文件。
(4)imagewbmp():以WBMP格式将图像输出到浏览器或文件。
imagegif($image, $filename)
imagejpeg($image,$filename,$quality)
imagepng($image,$filename)
imagewbmp($image,$filename,$foreground)
参数:
$image 要输出的图像
$filename 可选参数 指定输出图像的文件名 如省略 则原始图像将直接输出
$quality 可选,图像质量0-100 默认75
$foreground 可选 指定图像前景颜色 默认黑色
4、绘制图像
a、绘制一个点
在PHP中,使用imageSetPixel()函数在画布中绘制一个像素点,并且可以设置点的颜色
imagesetpixel($image,$x,$y,$color);
在$image图像上的($x,$y)坐标上画一个$color颜色的点
b、绘制一条线段
使用imageline()函数在画布中绘制一条线段
imageline($image,$x1,$y1,$x2,$y2,$color);
c、绘制矩形
使用imagerectangle()函数在画布中绘制矩形
imagerectangle($image,$x1, $y1,$x2,$y2,$color);
在$image中绘制一个$color颜色的矩形,左上角坐标为($x1, $y1),右下角坐标为($x2,$y2)
还可以使用imagefilledrectangle()函数绘制填充的矩形,语法与imagerectangle()函数的语法基本一致
d、绘制椭圆
使用imageellipse()函数在画布中绘制椭圆
imageellipse($image,$cx,$cy,$width,$height,$color);
在$image中绘制一个$color颜色的椭圆,中心点的坐标为($cx, $cy),椭圆的宽度为$width,高度为$height
还可以使用imagefilledellipse()函数绘制填充的椭圆,语法与imageellipse()函数的语法基本一致
e、绘制多边形
使用imagepolygon()函数在画布中绘制多边形
f、绘制椭圆弧并填充
使用imagefilledarc()函数绘制填充椭圆弧
5、在图像中绘制文字
使用imagettftext()函数在图像中绘制文字