基于PHP的GD图形库,自己生成一张图片。第一次才知道GD库,通过例子学习。
一、需求
网站的布局采用了类似于海量开放在线课程中课程列表的风格。每门课程都是一个标题图,标题和介绍如下。由于课程数量较多,没有专门为所有课程设计的横幅,所以需要按照一定的规则生成图片(div布局原本是为了解决这个问题,但是DIVIG在响应布局上没有很好的控制)。
生成的渲染:
二、工具材料
1.PHP打开GD图形库扩展2。准备多个小水印图3。获取预先生成的图片的背景色的RGB值
第三,代码
代码中详细解释了生成图片的过程。
class GenerateRandomImage {/* * @ var integer图片宽度*/public $ IMgwidth=272;/** @var整数图片高度*/public $ IMGheight=162;/** @var根据类型不同来生成不同的背景颜色,目前留个类型分别为蓝色、紫色、黄色、绿色、灰色、土黄色*/public $ type=' ';/** @var图片上要显示的文字*/public $ text=' ';/** @var整数图片上文字的字体大小*/public $ font size=16;public function _ _ construct($ type,$ text){ $ this-type=$ type;$ this-text=$ text;} /** * 创建生成随机图片* @作者大书呆子* @自2017-03-21t 14:49336041 0800 */public function createImg(){/* * @ var创建一个指定图片大小的空调色板$ image=image create($ this-imgWidth,$ this-imgHeight);$ RGB=$ this-getBackground($ this-type);/** @var为图片创建一个背景色*/$底色=imagecolor allocate($ image,$rgb['r'],$rgb['g'],$ RGB[' b ']);/** @var创建文字白色字体*/$ text color=image color allocate($ image,255,255,255);/** @var字体文件路径*/$ font=$ _ SERVER[' DOCUMENT _ ROOT ']./public/font/sim hei。' TTF ';$ x=18//文字起始位置x坐标$ y=50//文字起始位置y坐标/** 文字写入图片*/$ angle=0;//角度0 imagettftext($image,$this-fontSize,$angle,$x,$y,$textColor,$font,$ this-text);/** @var水印图片路径* */$ waterImgPath=$ this-randWaterImage();/** @var获取图片信息,返回值$waterInfo[2]为图片类型常量*/$ waterInfo=getimagesize($ waterImgPath);/** @var将图片类型常量转换为真正的类型,如png */$ water type=image _ type _ to _ extension($ waterInfo[2],false);//获取文件类型$ createImageFunc=' imagecreatefrom ' .$ waterType/** @var创建一个水印图片的副本$createImageFunc为根据图片类型来动态生成预调用的创建图片函数*/$ mask=$ createImageFunc($ waterImgPath);$ POSx=$ this-IMgwidth-$ WaterInfo[0];//水印图片,在目标图片中的位置的x坐标$ POSy=$ this-IMGheight-$ WaterInfo[1];//水印图片,在目标图片中的位置的y坐标/** http请求响应类型设置为图像/png以便直接显示为图片*/header(' Content-type : IMage/png ');/** 水印图片复制到创建的image */imagecopy($image,$mask,$posX,$posY,0,0,$waterInfo[0],$ waterInfo[1]);image png($ image);//输入图片到浏览器或者文件图像破坏($ image);//销毁图片} /** * 图片背景颜色的rgb值* @作者大书呆子* @自2017-03-21t 14:50336016 0800 */public function getBackground(){ $ background=[' 1 '=[' r '=0,' g'=160,' b'=233],' 2'=['r'=198,' g'=0,' b'=110],' 3'=['r'=237,' g'=109,' b'=0返回$ background[$ this-type];} /** * 随机水印图片路径* @作者大书呆子* @自2017-03-21t 14:51336000 0800 * @返回路径*/public function randWaterImage(){ $ folder=[' 1 '=' product ',' 2'='team ',' 3'='architecture ',' 4'='developer ',' 5'='test ',' 6 '=' engineer '];$ TargetFolder=$ _ SERVER[' DOCUMENT _ ROOT ']./公众/形象/角色/.$folder[$this-type]./'.兰特(1,38). ' png ';返回$ TargetFolder } } $ image=new GenerateRandomImage(1,)扛得住的关系型数据库数据架构');$ image-createImg();这样我们就可以直接在页面中使用img src=' http :http://XXX。com/generaterandomimage。PHP '/来直接显示图片。
注意:过程中遇到过一个问题:如果水印图片是透明的巴布亚新几内亚图片,那将水印图片复制到图像中时,会显示为白色背景,与我们设定的图像背景无法透明融合,所以对随机的水印图片也需要做同样的颜色处理。
四、总结
这个小示例使用简单的步骤生成一张图片并直接在浏览器中显示,或者它可以向imagepng添加第二个参数,即路径来保存图片。因此,您可以通过学习示例中几个GD库中的方法来创建图片、向图片添加文本水印或为图片添加水印。
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。