日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
PHP圖片處理庫(kù)Grafika詳細(xì)教程(4):圖形繪制

該文章是接著上篇文章,《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è)(數(shù)組):表示起始點(diǎn),數(shù)組內(nèi)***個(gè)參數(shù)為x,第二個(gè)參數(shù)為y(下同)
  • 第二個(gè)(數(shù)組):控制點(diǎn)1(接近起始點(diǎn)),數(shù)組內(nèi)參數(shù)同上
  • 第三個(gè)(數(shù)組):控制點(diǎn)2(接近結(jié)束點(diǎn)),數(shù)組內(nèi)參數(shù)同上
  • 第四個(gè)(數(shù)組):結(jié)束點(diǎn),數(shù)組內(nèi)參數(shù)同上
  • 第五個(gè):顏色,可以用十六進(jìn)制表示,比如:#ff0000

繪制貝塞爾曲線有兩個(gè)方法。但是大體步驟相同。1:、打開(kāi)圖片;2、繪圖;3、保存或者輸出

1)、自行選擇庫(kù),這種方法需要自行判斷

命名空間中的use也需要注意,比之前多了兩個(gè)

 
 
  1. use Grafika\Grafika; 
  2. use Grafika\Gd\DrawingObject\CubicBezier as GdCubicBezier; 
  3. use Grafika\Imagick\DrawingObject\CubicBezier as ImagickCubicBezier; 
  4.  
  5. $editor = Grafika::createEditor(); 
  6. $editor->open($image , 'yanying-smaller.jpg'); 
  7. $editorName = Grafika::detectAvailableEditor(); 
  8. if('Imagick'===$editorName){ 
  9.     $drawingObject = new ImagickCubicBezier(array(42, 180), array(230, 190), array(42, 45), array(300, 43), '#ff0000'); 
  10. } else if ('Gd'===$editorName) { 
  11.     $drawingObject = new GdCubicBezier(array(42, 180), array(230, 190), array(42, 45), array(300, 43), '#ff0000'); 
  12. $editor->draw( $image, $drawingObject ); 
  13. $editor->save($image,'333/yanying-CubicBezier-1.jpg');  

2)、可以讓grafika自己去選擇當(dāng)前適合的類

這種方法就是簡(jiǎn)單了許多,我們這次重新設(shè)定了參數(shù),并且把線條顏色改為了黑色

 
 
  1. use Grafika\Grafika; 
  2. $editor = Grafika::createEditor(); 
  3. $editor->open($image , 'yanying-smaller.jpg'); 
  4. $drawingObject = Grafika::createDrawingObject('CubicBezier', array(42, 230), array(230, 237), array(42, 45), array(230, 43), '#000000'); 
  5. $editor->draw( $image, $drawingObject ); 
  6. $editor->save($image,'333/yanying-CubicBezier-1.jpg');  

效果不錯(cuò),以后再搞驗(yàn)證碼就簡(jiǎn)單多了

2、繪制橢圓

橢圓雖然看著難,但是只要搞清楚確定一個(gè)橢圓的幾個(gè)基本參數(shù)就可以了。

這里使用Ellipse參數(shù)來(lái)繪制橢圓。

后面跟著一些繪制橢圓的形狀、樣式參數(shù)。我們從左到右描述

  • 橢圓的寬:px為單位
  • 橢圓的高:px為單位
  • 位置(數(shù)組):數(shù)組內(nèi)***個(gè)值為x(橢圓最左邊距離圖像最左邊值),第二個(gè)值為y(橢圓最上邊距離圖形最上邊值)
  • 邊框?qū)挾龋簡(jiǎn)挝籶x,如果設(shè)置為0,則表示無(wú)邊框,默認(rèn)為1px
  • 橢圓邊框顏色:該值需要借助于color類,而不是簡(jiǎn)單的填入一個(gè)顏色字符串
  • 橢圓的填充值:該顏色同上

我們創(chuàng)建一個(gè)200*100,距離左邊50,上邊75,邊框?yàn)?,邊框色為黑色,填充紅色的橢圓。

 
 
  1. use Grafika\Grafika; 
  2. use Grafika\Color; 
  3. $editor = Grafika::createEditor(); 
  4. $editor->open($image , 'yanying-smaller.jpg'); 
  5. $drawingObject = Grafika::createDrawingObject('Ellipse', 200, 100, array(50, 75), 1, new Color('#000000'), new Color('#FF0000')); 
  6. $editor->draw( $image, $drawingObject ); 
  7. $editor->save($image,'333/yanying-Ellipse.jpg');  

查看結(jié)果

3、繪制直線

繪制直線就稍微簡(jiǎn)單點(diǎn)兒了。

  • ***個(gè)參數(shù)為數(shù)組,表示起始坐標(biāo)
  • 第二個(gè)參數(shù)為數(shù)組,表示結(jié)束坐標(biāo)
  • 第三個(gè)參數(shù)為垂直方向的順序,表示哪根線在上哪根線在下。(其中GD庫(kù)會(huì)忽略掉,默認(rèn)為1)
  • 第四個(gè)參數(shù)為顏色,不填默認(rèn)為黑色

我們?cè)囍嫀赘€試試:

 
 
  1. use Grafika\Grafika; 
  2. use Grafika\Color; 
  3. $editor = Grafika::createEditor(); 
  4. $editor->open($image , 'yanying-smaller.jpg'); 
  5. $editor->draw($image, Grafika::createDrawingObject('Line', array(0, 0), array(200, 200), 1, new Color('#FF0000'))); 
  6. $editor->draw($image, Grafika::createDrawingObject('Line', array(0, 200), array(200, 0), 1, new Color('#00FF00'))); 
  7. $editor->draw($image, Grafika::createDrawingObject('Line', array(0, 0), array(200, 100), 1, new Color('#0000FF'))); 
  8. $editor->draw($image, Grafika::createDrawingObject('Line', array(0, 100), array(200, 100))); 
  9. $editor->draw($image, Grafika::createDrawingObject('Line', array(100, 0), array(100, 200))); 
  10. $editor->save($image,'333/Line.jpg');   

4、繪制多邊形

我們使用Polygon繪制多邊形,其中參數(shù)為

  • ***個(gè)參數(shù)為坐標(biāo)點(diǎn),是一個(gè)數(shù)組,其中該數(shù)組內(nèi)有3個(gè)數(shù)組,每個(gè)數(shù)組有兩個(gè)值,***個(gè)值表示x,第二個(gè)值表示y

形如

array(array(0,0), array(50,0), array(0,50))

  • 第二個(gè)參數(shù)為邊框?qū)挾龋?為沒(méi)有,從1開(kāi)始,單位為px(默認(rèn)為1)
  • 第三個(gè)參數(shù)為邊框顏色(默認(rèn)為黑色)
  • 第四個(gè)參數(shù)為填充色(默認(rèn)白色)

我們?cè)囍嫀讉€(gè)圖形

 
 
  1. use Grafika\Grafika; 
  2. use Grafika\Color; 
  3. $editor = Grafika::createEditor(); 
  4. $editor->open($image , 'yanying-smaller.jpg'); 
  5. $editor->draw( $image, Grafika::createDrawingObject('Polygon', array(array(0,0), array(50,0), array(0,50)), 1)); 
  6. $editor->draw( $image, Grafika::createDrawingObject('Polygon', array(array(200-1,0), array(150-1,0), array(200-1,50)), 1)); 
  7. $editor->draw( $image, Grafika::createDrawingObject('Polygon', array(array(100,0), array(140,50), array(100,100), array(60,50)), 1, null, new Color('#FF0000'))); 
  8. $editor->save($image,'333/Polygon.jpg');   

5、二次貝塞爾曲線

又稱貝茲曲線或貝濟(jì)埃曲線,是應(yīng)用于二維圖形應(yīng)用程序的數(shù)學(xué)曲線

其形如這個(gè)樣子

我們使用如下代碼就可以很輕松的創(chuàng)建

 
 
  1. use Grafika\Grafika; 
  2. $editor = Grafika::createEditor(); 
  3. $editor->open($image , 'yanying-smaller.jpg'); 
  4. $drawingObject = Grafika::createDrawingObject('QuadraticBezier', array(70, 250), array(20, 110), array(220, 60), '#FF0000'); 
  5. $editor->draw( $image, $drawingObject ); 
  6. $editor->save($image,'333/yanying-QuadraticBezier.jpg');  

其中參數(shù)如下

  • ***個(gè)參數(shù)為起始點(diǎn)的坐標(biāo),是一個(gè)數(shù)組array(x,y)
  • 第二個(gè)參數(shù)為控制點(diǎn)的坐標(biāo),也是數(shù)組,數(shù)組內(nèi)分別為x,y
  • 第三個(gè)參數(shù)為結(jié)束點(diǎn)的坐標(biāo),也是一個(gè)數(shù)組,數(shù)組內(nèi)為x,y
  • ***一個(gè)參數(shù)為顏色,默認(rèn)為黑色

當(dāng)然你也可以使用另外一種方式來(lái)創(chuàng)建二次貝塞曲線

 
 
  1. use Grafika\Grafika; 
  2. use Grafika\Gd\DrawingObject\QuadraticBezier as GdQuadraticBezier; 
  3. use Grafika\Imagick\DrawingObject\QuadraticBezier as ImagickQuadraticBezier; 
  4. $editorName = Grafika::detectAvailableEditor(); 
  5. $editor = Grafika::createEditor(); 
  6. $editor->open($image , 'yanying-smaller.jpg'); 
  7. if('Imagick'===$editorName){ 
  8.     $drawingObject = new ImagickQuadraticBezier(array(70, 250), array(20, 110), array(220, 60), '#FF0000'); 
  9. } else if ('Gd'===$editorName) { 
  10.     $drawingObject = new GdQuadraticBezier(array(70, 250), array(20, 110), array(220, 60), '#FF0000'); 
  11. $editor->draw( $image, $drawingObject ); 
  12. $editor->save($image,'333/yanying-QuadraticBezier-1.jpg');  

6、創(chuàng)建矩形

矩形,其實(shí)和橢圓形差不多,只是有個(gè)別參數(shù)有些差異。

可以使用如下的代碼直接創(chuàng)建一個(gè)矩形

 
 
  1. use Grafika\Grafika; 
  2. use Grafika\Color; 
  3. $editorName = Grafika::detectAvailableEditor(); 
  4. $editor = Grafika::createEditor(); 
  5. $editor->open($image , 'yanying-smaller.jpg'); 
  6. $editor->draw( $image, Grafika::createDrawingObject('Rectangle', 85, 50)); // A 85x50 no filled rectangle with a black 1px border on location 0,0. 
  7. $editor->draw( $image, Grafika::createDrawingObject('Rectangle', 85, 50, array(105, 10), 0, null, new Color('#FF0000'))); // A 85x50 red rectangle with no border. 
  8. $editor->draw( $image, Grafika::createDrawingObject('Rectangle', 85, 50, array(105, 70), 0, null, new Color('#00FF00'))); // A 85x50 green rectangle with no border. 
  9. $editor->draw( $image, Grafika::createDrawingObject('Rectangle', 85, 50, array(0, 60), 1, '#000000', null)); // No fill rectangle 
  10. $editor->save($image,'333/yanying-Rectangle.jpg');  

其中的參數(shù)

  • ***個(gè)為:寬度。px為單位
  • 第二個(gè)為高度,px為單位
  • 第三個(gè)為一個(gè)數(shù)組,內(nèi)包含兩個(gè)值,x:表示矩形左邊距離圖片左邊的距離;y:表示矩形的上邊距離圖片的上邊距離。默認(rèn)為array(0,0)表示和左上角重疊。
  • 第四個(gè)參數(shù)為邊框的寬度,默認(rèn)為1,當(dāng)設(shè)置為0的時(shí)候,表示沒(méi)有邊框
  • 第五個(gè)參數(shù)為邊框的顏色,默認(rèn)為黑色,當(dāng)設(shè)置為null的時(shí)候表示沒(méi)有顏色
  • 第六個(gè)參數(shù)為填充顏色,默認(rèn)為白色,當(dāng)設(shè)置為null的時(shí)候表示沒(méi)有顏色

我們繪制了幾個(gè)矩形


網(wǎng)頁(yè)標(biāo)題:PHP圖片處理庫(kù)Grafika詳細(xì)教程(4):圖形繪制
文章地址:http://www.dlmjj.cn/article/dpgjipp.html