该文章是接着上篇文章,《PHP极其强大的图片处理库Grafika详细教程(3):图像属性处理》,是grafika教程的一个部分。
创新互联公司是一家专注于网站制作、网站设计与策划设计,武隆网站建设哪家好?创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:武隆等地区。武隆做网站价格咨询:18980820575
所有的教程目录
《1、图像基本处理》
《2、图像特效处理模块》
《3、图像属性处理》
《4、图形绘制》
话不多说,我们接着上实例,要看基础描述,和下载信息请看***篇
1、绘制贝塞尔曲线
贝塞尔曲线绘制,需要两个端点,一头一尾,还有两个控制点,在之间。所以,必然最起码4个参数。加上一个颜色共计5个参数。
从做到右,我们依次解释
绘制贝塞尔曲线有两个方法。但是大体步骤相同。1:、打开图片;2、绘图;3、保存或者输出
1)、自行选择库,这种方法需要自行判断
命名空间中的use也需要注意,比之前多了两个
- use Grafika\Grafika;
- use Grafika\Gd\DrawingObject\CubicBezier as GdCubicBezier;
- use Grafika\Imagick\DrawingObject\CubicBezier 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 Grafika\Grafika;
- $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参数来绘制椭圆。
后面跟着一些绘制椭圆的形状、样式参数。我们从左到右描述
我们创建一个200*100,距离左边50,上边75,边框为1,边框色为黑色,填充红色的椭圆。
- use Grafika\Grafika;
- use Grafika\Color;
- $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、绘制直线
绘制直线就稍微简单点儿了。
我们试着画几根线试试:
- use Grafika\Grafika;
- use Grafika\Color;
- $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、绘制多边形
我们使用Polygon绘制多边形,其中参数为
形如
array(array(0,0), array(50,0), array(0,50))
我们试着画几个图形
- use Grafika\Grafika;
- use Grafika\Color;
- $editor = Grafika::createEditor();
- $editor->open($image , 'yanying-smaller.jpg');
- $editor->draw( $image, Grafika::createDrawingObject('Polygon', array(array(0,0), array(50,0), array(0,50)), 1));
- $editor->draw( $image, Grafika::createDrawingObject('Polygon', array(array(200-1,0), array(150-1,0), array(200-1,50)), 1));
- $editor->draw( $image, Grafika::createDrawingObject('Polygon', array(array(100,0), array(140,50), array(100,100), array(60,50)), 1, null, new Color('#FF0000')));
- $editor->save($image,'333/Polygon.jpg');
5、二次贝塞尔曲线
又称贝兹曲线或贝济埃曲线,是应用于二维图形应用程序的数学曲线
其形如这个样子
我们使用如下代码就可以很轻松的创建
- use Grafika\Grafika;
- $editor = Grafika::createEditor();
- $editor->open($image , 'yanying-smaller.jpg');
- $drawingObject = Grafika::createDrawingObject('QuadraticBezier', array(70, 250), array(20, 110), array(220, 60), '#FF0000');
- $editor->draw( $image, $drawingObject );
- $editor->save($image,'333/yanying-QuadraticBezier.jpg');
其中参数如下
当然你也可以使用另外一种方式来创建二次贝塞曲线
- use Grafika\Grafika;
- use Grafika\Gd\DrawingObject\QuadraticBezier as GdQuadraticBezier;
- use Grafika\Imagick\DrawingObject\QuadraticBezier as ImagickQuadraticBezier;
- $editorName = Grafika::detectAvailableEditor();
- $editor = Grafika::createEditor();
- $editor->open($image , 'yanying-smaller.jpg');
- if('Imagick'===$editorName){
- $drawingObject = new ImagickQuadraticBezier(array(70, 250), array(20, 110), array(220, 60), '#FF0000');
- } else if ('Gd'===$editorName) {
- $drawingObject = new GdQuadraticBezier(array(70, 250), array(20, 110), array(220, 60), '#FF0000');
- }
- $editor->draw( $image, $drawingObject );
- $editor->save($image,'333/yanying-QuadraticBezier-1.jpg');
6、创建矩形
矩形,其实和椭圆形差不多,只是有个别参数有些差异。
可以使用如下的代码直接创建一个矩形
- use Grafika\Grafika;
- use Grafika\Color;
- $editorName = Grafika::detectAvailableEditor();
- $editor = Grafika::createEditor();
- $editor->open($image , 'yanying-smaller.jpg');
- $editor->draw( $image, Grafika::createDrawingObject('Rectangle', 85, 50)); // A 85x50 no filled rectangle with a black 1px border on location 0,0.
- $editor->draw( $image, Grafika::createDrawingObject('Rectangle', 85, 50, array(105, 10), 0, null, new Color('#FF0000'))); // A 85x50 red rectangle with no border.
- $editor->draw( $image, Grafika::createDrawingObject('Rectangle', 85, 50, array(105, 70), 0, null, new Color('#00FF00'))); // A 85x50 green rectangle with no border.
- $editor->draw( $image, Grafika::createDrawingObject('Rectangle', 85, 50, array(0, 60), 1, '#000000', null)); // No fill rectangle
- $editor->save($image,'333/yanying-Rectangle.jpg');
其中的参数
我们绘制了几个矩形
文章标题:PHP图片处理库Grafika详细教程(4):图形绘制
当前路径:http://www.csdahua.cn/qtweb/news1/496351.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网