成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PHP圖片處理庫Grafika詳細教程(4):圖形繪制

開發 后端
該文章是接著上一篇文章:《PHP極其強大的圖片處理庫Grafika詳細教程(3):圖像屬性處理》,是grafika教程的一個部分。

該文章是接著上篇文章,《PHP極其強大的圖片處理庫Grafika詳細教程(3):圖像屬性處理》,是grafika教程的一個部分。

所有的教程目錄

《1、圖像基本處理》

《2、圖像特效處理模塊》

《3、圖像屬性處理》

《4、圖形繪制》

話不多說,我們接著上實例,要看基礎描述,和下載信息請看***篇

1、繪制貝塞爾曲線

貝塞爾曲線繪制,需要兩個端點,一頭一尾,還有兩個控制點,在之間。所以,必然最起碼4個參數。加上一個顏色共計5個參數。

從做到右,我們依次解釋

  • ***個(數組):表示起始點,數組內***個參數為x,第二個參數為y(下同)
  • 第二個(數組):控制點1(接近起始點),數組內參數同上
  • 第三個(數組):控制點2(接近結束點),數組內參數同上
  • 第四個(數組):結束點,數組內參數同上
  • 第五個:顏色,可以用十六進制表示,比如:#ff0000

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

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

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

  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自己去選擇當前適合的類

這種方法就是簡單了許多,我們這次重新設定了參數,并且把線條顏色改為了黑色

  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');  

 

 

 

效果不錯,以后再搞驗證碼就簡單多了

2、繪制橢圓

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

這里使用Ellipse參數來繪制橢圓。

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

  • 橢圓的寬:px為單位
  • 橢圓的高:px為單位
  • 位置(數組):數組內***個值為x(橢圓最左邊距離圖像最左邊值),第二個值為y(橢圓最上邊距離圖形最上邊值)
  • 邊框寬度:單位px,如果設置為0,則表示無邊框,默認為1px
  • 橢圓邊框顏色:該值需要借助于color類,而不是簡單的填入一個顏色字符串
  • 橢圓的填充值:該顏色同上

我們創建一個200*100,距離左邊50,上邊75,邊框為1,邊框色為黑色,填充紅色的橢圓。

  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');  

查看結果 

 

 

 

3、繪制直線

繪制直線就稍微簡單點兒了。

  • ***個參數為數組,表示起始坐標
  • 第二個參數為數組,表示結束坐標
  • 第三個參數為垂直方向的順序,表示哪根線在上哪根線在下。(其中GD庫會忽略掉,默認為1)
  • 第四個參數為顏色,不填默認為黑色

我們試著畫幾根線試試:

  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繪制多邊形,其中參數為

  • ***個參數為坐標點,是一個數組,其中該數組內有3個數組,每個數組有兩個值,***個值表示x,第二個值表示y

形如

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

  • 第二個參數為邊框寬度,0為沒有,從1開始,單位為px(默認為1)
  • 第三個參數為邊框顏色(默認為黑色)
  • 第四個參數為填充色(默認白色)

我們試著畫幾個圖形

  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、二次貝塞爾曲線

又稱貝茲曲線或貝濟埃曲線,是應用于二維圖形應用程序的數學曲線

其形如這個樣子 

 

 

 

我們使用如下代碼就可以很輕松的創建

  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');  

其中參數如下

  • ***個參數為起始點的坐標,是一個數組array(x,y)
  • 第二個參數為控制點的坐標,也是數組,數組內分別為x,y
  • 第三個參數為結束點的坐標,也是一個數組,數組內為x,y
  • ***一個參數為顏色,默認為黑色

當然你也可以使用另外一種方式來創建二次貝塞曲線

  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、創建矩形

矩形,其實和橢圓形差不多,只是有個別參數有些差異。

可以使用如下的代碼直接創建一個矩形

  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');  

其中的參數

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

我們繪制了幾個矩形  

 

 

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2016-11-10 11:55:29

圖像分割圖像處理php

2016-11-09 20:41:47

PHP圖片切片圖片壓縮

2016-11-09 18:41:47

PHP圖片存儲yii

2009-12-07 16:44:45

PHP圖形處理函數

2009-12-10 09:48:26

PHP獲取遠程圖片

2011-06-17 13:18:17

Qt 文件

2011-06-17 13:39:47

Qt 文件

2009-12-11 17:14:43

PHP中文處理函數

2009-11-27 10:32:35

2009-12-07 17:05:36

PHP函數imaget

2009-08-27 18:10:58

PHP繪制3D圖形

2009-11-16 11:18:38

PHP上傳圖片代碼

2013-04-15 14:23:21

2009-12-04 15:28:36

PHP JSON類庫

2013-12-27 13:00:30

Android開發Android應用Context Men

2013-12-04 16:07:27

Android游戲引擎libgdx教程

2023-09-07 08:24:35

圖形編輯器開發繪制圖形工具

2017-11-21 14:14:04

PHPnode.js圖片訪問

2009-11-16 11:07:26

PHP上傳圖片

2019-01-04 12:46:03

程序員技能溝通
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人午夜高清 | www.伊人.com | 亚洲福利一区 | 91久久视频 | 麻豆91精品91久久久 | 91精品国产综合久久久久 | 毛片毛片毛片毛片毛片 | 九九热这里只有精品在线观看 | 精品一区二区三区在线观看 | 一区二区在线看 | 日本精品视频在线 | 国产成人精品网站 | 99pao成人国产永久免费视频 | 麻豆久久 | 美女福利网站 | 91精品国产色综合久久不卡98 | xxxcom在线观看 | 欧美不卡在线 | 精品国产乱码久久久久久图片 | 国产一级片免费看 | 欧美精品网站 | 亚洲天堂久久 | 亚洲国产片 | 日韩av免费在线观看 | 中文字幕在线电影观看 | 二区精品 | 综合九九 | 日韩精品一区二区三区四区视频 | 中文字幕国产精品 | 草草视频在线免费观看 | 国产三级日本三级 | 久久www免费人成看片高清 | 欧美一区免费在线观看 | 成人一区二区在线 | 91成人午夜性a一级毛片 | www.日韩 | 日韩欧美国产成人一区二区 | 日韩久久久久久 | 一区在线视频 | 成人黄色网址大全 | 在线免费观看成年人视频 |