副标题[/!--empirenews.page--]
该文章是接着上篇文章,《PHP极其强大的图片处理库Grafika详细教程(3):图像属性处理》,是grafika教程的一个部分。
所有的教程目录
《1、图像基本处理》
《2、图像特效处理模块》
《3、图像属性处理》
《4、图形绘制》
话不多说,我们接着上实例,要看基础描述,和下载信息请看第一篇
1、绘制贝塞尔曲线
贝塞尔曲线绘制,需要两个端点,一头一尾,还有两个控制点,在之间。所以,必然最起码4个参数。加上一个颜色共计5个参数。
从做到右,我们依次解释
- 第一个(数组):表示起始点,数组内第一个参数为x,第二个参数为y(下同)
- 第二个(数组):控制点1(接近起始点),数组内参数同上
- 第三个(数组):控制点2(接近结束点),数组内参数同上
- 第四个(数组):结束点,数组内参数同上
- 第五个:颜色,可以用十六进制表示,比如:#ff0000
绘制贝塞尔曲线有两个方法。但是大体步骤相同。1:、打开图片;2、绘图;3、保存或者输出
1)、自行选择库,这种方法需要自行判断
命名空间中的use也需要注意,比之前多了两个
- use GrafikaGrafika;
- use GrafikaGdDrawingObjectCubicBezier as GdCubicBezier;
- use GrafikaImagickDrawingObjectCubicBezier as ImagickCubicBezier;
-
- $editor = Grafika::createEditor();
- $editor->open($image , 'yanying-smaller.jpg');
- $editorName = Grafika::detectAvailableEditor();
- if('Imagick'===$editorName){
- $drawingObject = new ImagickCubicBezier(array(42, 180), array(230, 190), array(42, 45), array(300, 43), '#ff0000');
- } else if ('Gd'===$editorName) {
- $drawingObject = new GdCubicBezier(array(42, 180), array(230, 190), array(42, 45), array(300, 43), '#ff0000');
- }
- $editor->draw( $image, $drawingObject );
- $editor->save($image,'333/yanying-CubicBezier-1.jpg');

2)、可以让grafika自己去选择当前适合的类
这种方法就是简单了许多,我们这次重新设定了参数,并且把线条颜色改为了黑色
- use GrafikaGrafika;
- $editor = Grafika::createEditor();
- $editor->open($image , 'yanying-smaller.jpg');
- $drawingObject = Grafika::createDrawingObject('CubicBezier', array(42, 230), array(230, 237), array(42, 45), array(230, 43), '#000000');
- $editor->draw( $image, $drawingObject );
- $editor->save($image,'333/yanying-CubicBezier-1.jpg');

效果不错,以后再搞验证码就简单多了
2、绘制椭圆
椭圆虽然看着难,但是只要搞清楚确定一个椭圆的几个基本参数就可以了。
这里使用Ellipse参数来绘制椭圆。
后面跟着一些绘制椭圆的形状、样式参数。我们从左到右描述
- 椭圆的宽:px为单位
- 椭圆的高:px为单位
- 位置(数组):数组内第一个值为x(椭圆最左边距离图像最左边值),第二个值为y(椭圆最上边距离图形最上边值)
- 边框宽度:单位px,如果设置为0,则表示无边框,默认为1px
- 椭圆边框颜色:该值需要借助于color类,而不是简单的填入一个颜色字符串
- 椭圆的填充值:该颜色同上
我们创建一个200*100,距离左边50,上边75,边框为1,边框色为黑色,填充红色的椭圆。
- use GrafikaGrafika;
- use GrafikaColor;
- $editor = Grafika::createEditor();
- $editor->open($image , 'yanying-smaller.jpg');
- $drawingObject = Grafika::createDrawingObject('Ellipse', 200, 100, array(50, 75), 1, new Color('#000000'), new Color('#FF0000'));
- $editor->draw( $image, $drawingObject );
- $editor->save($image,'333/yanying-Ellipse.jpg');
查看结果

3、绘制直线
绘制直线就稍微简单点儿了。
- 第一个参数为数组,表示起始坐标
- 第二个参数为数组,表示结束坐标
- 第三个参数为垂直方向的顺序,表示哪根线在上哪根线在下。(其中GD库会忽略掉,默认为1)
- 第四个参数为颜色,不填默认为黑色
我们试着画几根线试试:
- use GrafikaGrafika;
- use GrafikaColor;
- $editor = Grafika::createEditor();
- $editor->open($image , 'yanying-smaller.jpg');
- $editor->draw($image, Grafika::createDrawingObject('Line', array(0, 0), array(200, 200), 1, new Color('#FF0000')));
- $editor->draw($image, Grafika::createDrawingObject('Line', array(0, 200), array(200, 0), 1, new Color('#00FF00')));
- $editor->draw($image, Grafika::createDrawingObject('Line', array(0, 0), array(200, 100), 1, new Color('#0000FF')));
- $editor->draw($image, Grafika::createDrawingObject('Line', array(0, 100), array(200, 100)));
- $editor->draw($image, Grafika::createDrawingObject('Line', array(100, 0), array(100, 200)));
- $editor->save($image,'333/Line.jpg');

4、绘制多边形
(编辑:PHP编程网 - 黄冈站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|