掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
該文章是接著上篇文章,《PHP極其強(qiáng)大的圖片處理庫(kù)Grafika詳細(xì)教程(3):圖像屬性處理》,是grafika教程的一個(gè)部分。

創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站制作、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),武隆網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:武隆等地區(qū)。武隆做網(wǎng)站價(jià)格咨詢:18980820575
所有的教程目錄
《1、圖像基本處理》
《2、圖像特效處理模塊》
《3、圖像屬性處理》
《4、圖形繪制》
話不多說(shuō),我們接著上實(shí)例,要看基礎(chǔ)描述,和下載信息請(qǐng)看***篇
1、繪制貝塞爾曲線
貝塞爾曲線繪制,需要兩個(gè)端點(diǎn),一頭一尾,還有兩個(gè)控制點(diǎn),在之間。所以,必然最起碼4個(gè)參數(shù)。加上一個(gè)顏色共計(jì)5個(gè)參數(shù)。
從做到右,我們依次解釋
繪制貝塞爾曲線有兩個(gè)方法。但是大體步驟相同。1:、打開圖片;2、繪圖;3、保存或者輸出
1)、自行選擇庫(kù),這種方法需要自行判斷
命名空間中的use也需要注意,比之前多了兩個(gè)
- 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自己去選擇當(dāng)前適合的類
這種方法就是簡(jiǎn)單了許多,我們這次重新設(shè)定了參數(shù),并且把線條顏色改為了黑色
- 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');
效果不錯(cuò),以后再搞驗(yàn)證碼就簡(jiǎn)單多了
2、繪制橢圓
橢圓雖然看著難,但是只要搞清楚確定一個(gè)橢圓的幾個(gè)基本參數(shù)就可以了。
這里使用Ellipse參數(shù)來(lái)繪制橢圓。
后面跟著一些繪制橢圓的形狀、樣式參數(shù)。我們從左到右描述
我們創(chuàng)建一個(gè)200*100,距離左邊50,上邊75,邊框?yàn)?,邊框色為黑色,填充紅色的橢圓。
- 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');
查看結(jié)果
3、繪制直線
繪制直線就稍微簡(jiǎn)單點(diǎn)兒了。
我們?cè)囍嫀赘€試試:
- 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繪制多邊形,其中參數(shù)為
形如
array(array(0,0), array(50,0), array(0,50))
我們?cè)囍嫀讉€(gè)圖形
- 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、二次貝塞爾曲線
又稱貝茲曲線或貝濟(jì)埃曲線,是應(yīng)用于二維圖形應(yīng)用程序的數(shù)學(xué)曲線
其形如這個(gè)樣子
我們使用如下代碼就可以很輕松的創(chuàng)建
- 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');
其中參數(shù)如下
當(dāng)然你也可以使用另外一種方式來(lái)創(chuàng)建二次貝塞曲線
- 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、創(chuàng)建矩形
矩形,其實(shí)和橢圓形差不多,只是有個(gè)別參數(shù)有些差異。
可以使用如下的代碼直接創(chuàng)建一個(gè)矩形
- 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');
其中的參數(shù)
我們繪制了幾個(gè)矩形

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流