• 微信

PHP常用的图像处理技术

作者:Alpha时间:2018-11-03 阅读数:2770 +人阅读

在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()函数销毁图像资源。

QQ截图20181103102025.jpg

二、颜色处理

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

上述代码先创建一张画布,然后设置画布颜色,并在画布上画了一条斜线。

QQ截图20181103112654.jpg

三、绘制文字

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

QQ截图20181103150254.jpg

绘制中文汉字应用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);

QQ截图20181103150237.jpg

代码说明:创建一个宽500px,高250px的画布,通过imagecolorallocate()函数为画布设置背景色,引用字体文件并写文字到画布上,最后输出图片。

四、输出图像

五、销毁图像

本站所有文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。

如果侵犯了你的权益请来信告知我们删除。邮箱:595397166@qq.com

标签: 小程序

阿尔法

软件开发工程师#全栈工程师

{include file=foot.html}
0.869391s