计算机网络/计算机科学与应用/系统/运维/开发

PHP 图像处理技术

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()函数在图像中绘制文字





php

努力的意义,不在于一定会让你取得多大的成就,只是让你在平凡的日子里,活得比原来的那个自己更好一点。

评论

^