PHP常用的图像处理技术
在PHP中,我们只需要4步操作即可完成一个图片处理过程:
1、创建画布
2、在画布上绘制图形
3、保存并输出结果图形
4、销毁图像资源
一、创建画布
GD2函数库在图形图像绘制方面功能非常强大,利用它开发人员既可以在已有的图片基础上进行绘制(加水印,带二维码的推广图片等),也可以在没有任何素材的基础上绘制(此时必须先创建画布),之后所有操作都将依据所创建的画布进行,GD2函数库中创建画布应用使用函数:imagecreate()。
resource imagecreate(int x_size,int y_size)
该函数用于返回一个图像标识符,两个参数分别为图像的宽高尺寸,单位为像素px。
示例代码:
header("Content-type:text/html;charset=utf-8"); //设置页面编码风格 header("Content-type:image/jpg"); //告知浏览器输出的是图片 $image = imagecreate(400,300); //设置画布大小 $bgcolor = imagecolorallocate($image,255,60,60); //设置画布的背景颜色 imagejpeg($image); //输出图像 imagedestroy($image);
通过imagecreate()函数创建一个宽400px,高300px,图片背景颜色rgb(255,60,60),最后输出一个jpg格式的图像。通过imagecreate()函数创建的一个基于普通调色板的画布,通常支持256色,通过imagecolorallocate()函数设置背景颜色,通过imagejpg()输出图像,最后避免资源浪费使用imagedestroy()函数销毁图像资源。
二、颜色处理
应用GD2函数绘制图形需要为图形中的背景、边框和文字等元素指定颜色,GD2中使用imagecolorallocate()函数来设置,在上面代码中已经出效果了:
int imagecolorallocate(resource image,int red,int green,int blue);
对应的参数依次为创建的图像资源、3个rgb颜色值 0-255整数或者是十六进制的0x00~0xFF。
imagecolorallocate()函数返回一个标识符,代表给定的rgb成分组成颜色。
示例代码:
header("Content-type:text/html;charset=utf-8"); //设置页面编码风格 header("Content-type:image/jpg"); //告知浏览器输出的是图片 $image = imagecreate(650,200); $bgcolor = imagecolorallocate($image,200,255,255); //设置图片的背景颜色 $write = imagecolorallocate($image,0,0,0); //设置线条颜色 imageline($image,30,30,600,160,$write); //画一条线 imagejpeg($image); //输出图像 imagedestroy($image);
上述代码先创建一张画布,然后设置画布颜色,并在画布上画了一条斜线。
三、绘制文字
GD库既可以绘制英文字符串,也可以绘制中文汉字,绘制英文字符串用imagestring()函数,语法:
bool imagestring(resource image,int font,int x,int y,string s,int color);
imagestring()函数用color颜色将字符串s绘制到image所代表的图像的x,y坐标处(这是字符串左上角坐标,政府图像的左上角为0,0),如果font是1,2,3,4,5,则使用内置字体,也可以设置为引用字体文件,设置好字体文件位置。
header("Content-type:text/html;charset=utf-8"); //设置页面编码风格 header("Content-type:image/jpg"); //告知浏览器输出的是图片 $image = imagecreate(350,150); $bgcolor = imagecolorallocate($image,200,60,60); $fontcolor = imagecolorallocate($image,0,0,0); imagestring($image,5,80,30,"PHP,HELLO WORLD","$fontcolor"); //书写英文字符串 imagejpeg($image); imagedestroy($image);
绘制中文汉字应用imagettftext()函数,语法:
array imagettftext(resource image,float size,float angle,int x,int y,int color,string fontfile,string text);
参数说明:
image:图像资源
size:字体大小,根据GD版本不同,像素以大小指定(GD1)或点大小(GD2)
angle:字体的角度,顺时针计算,0°为水平,90°为三点钟方向
x:文字的x坐标值,他设定了第一个字符的基本点
y:文字的y坐标值,他设定了字体基线的位置,不是字符的最低端
color:文字的颜色,
fontfile:字体的文件名称,也可以是远端文件
text:字符串内容
说明:在GD2函数库中支持的是utf-8编码格式的中文,所以再通过imagettftext()函数输出中文字符串时,必须保证中文字符串编码格式是utf8编码,否则中文将不能正确的输出。如果定义的字符串是gb2312编码,那么要通过iconv()函数对中文字符串的编码格式进行转换。
输出英文字符串代码示例:
header("Content-type:text/html;charset=utf-8"); //设置页面编码风格 header("Content-type:image/jpg"); //告知浏览器输出的是图片 $image = imagecreate(500,250); $bgcolor = imagecolorallocate($image,0,200,200); $fontcolor = imagecolorallocate($image,200,80,80); //设置字体颜色 $font = "light.ttf"; //定义字体 $string = "米云科技"; //定义输出的文字 imagettftext($image,70,0,70,150,$fontcolor,$font,$string); //写字到图片中 imagejpeg($image); //输出图片 jpg imagedestroy($image);
代码说明:创建一个宽500px,高250px的画布,通过imagecolorallocate()函数为画布设置背景色,引用字体文件并写文字到画布上,最后输出图片。
四、输出图像
五、销毁图像
本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了你的权益请来信告知我们删除。邮箱:595397166@qq.com
上一篇:php图形图像处理技术 GD库
下一篇:PHP实例代码:图片加水印