首頁  >  文章  >  後端開發  >  動態影像處理 — php(34)

動態影像處理 — php(34)

WBOY
WBOY原創
2016-08-08 09:23:361058瀏覽

1 PHP中GD函式庫的使用

PHP 不限於只產生HTML 的輸出,還可以建立及操作多種不同格式的影像檔案。 PHP提供了一些內建的影像資訊函數,也可以使用GD函數庫建立新影像或處理現有的影像。目前GD2函式庫支援JPEG、PNG和WBMP格式。但不再支援GIF格​​式。

• JPEG 是一種壓縮標準的名字,通常是用來儲存照片或儲存具有豐富色彩和色彩層次的影像。這種格式使用了有損壓縮。

• PNG 是可移植的網路影像,對影像採用了無損壓縮標準。

• WBMP是專為無線通訊裝置設計的檔案格式。但是並沒有廣泛應用。

2 圖像的生成步驟

在PHP中創建一個圖像應該完成如下所示的4個步驟:
1.創建一個背景圖像(也叫此畫布),以後的操作都基於畫佈背景圖像。
2.在背景上繪製影像輪廓或輸入文字。
3.輸出最終圖形
4.釋放資源

<span><?<span>php
</span><span>//</span><span> 创建背景图像</span>$height = <span>200</span><span>;
$width </span>= <span>200</span><span>;
$im </span>= ImageCreateTrueColor($width, $height); <span>//</span><span>建立空白背景</span>$white = ImageColorAllocate ($im, <span>255</span>, <span>255</span>, <span>255</span>);<span>//</span><span>设置绘图颜色</span>$blue = ImageColorAllocate ($im, <span>0</span>, <span>0</span>, <span>64</span><span>);
imageFill($im, </span><span>0</span>, <span>0</span>, $blue);<span>//</span><span>绘制背景</span>imageLine($im, <span>0</span>, <span>0</span>, $width, $height, $white); <span>//</span><span>画线</span>imageString($im, <span>4</span>, <span>50</span>, <span>150</span>, <span>'</span><span>Sales</span><span>'</span>, $white); <span>//</span><span>添加字串</span>header(<span>'</span><span>Content-type: image/png</span><span>'</span><span>);
imagePng($im); </span><span>//</span><span>以PNG 格式将图像输出</span><span>imageDestroy($im);
</span>?></span>

3 畫布管理

. , inty_size)
??本函數用來建立空新畫布,參數為圖片大小,單位為像素(pixel)。支援256色。
??imagecreatetruecolor--新建一個真彩色圖像
??resource imagecreatetruecolor( intx_size, inty_size)
??新建一個真彩色圖像畫布,需要更多GD 2.0. GIF 檔案格式。
??imagedestroy--銷毀一圖像
??boolimagedestroy( resource image )
??imagedestroy() 釋放與image相關的記憶體。
其他函數

resource imagecreatefrompng( string filename )

從PNGfate? ??從JPEG 檔案或URL 新建一圖片
??resource imagecreatefromgif( string filename
??從GIF 檔案或URL 新建一映像
??resource imagecreatefrombmp( string probmp(c
? ?intimagesx( resource image ) ---取得影像寬度
??ntimagesy( resource image ) ---取得影像高度
4 設定顏色
??語法:intimagecolorallocate( resource image, intred, intgreen, intblue )
??imagecolorallocate() 傳回標識符,代表了由給定的RGB 成分組成的顏色。 ()函數的回傳值。以創建每一種用在image所代表的圖像中的顏色。 resource image [,string filename] )
??imagejpeg--以JPEG 格式將圖片輸出到瀏覽器或檔案

??語法:boolimagejpeg(resource image [,string image, intquality, intquality] int) ??imagepng--以PNG 格式將圖片輸出到瀏覽器或檔案

??語法:boolimagepng(resource image [,string filename] )
??imagewbmp--以WBMP 格式將圖片輸出到器或檔案
??語法:boolimagewbmp(resource image [, string filename [, intforeground]] )
6 繪製圖片age? ,intx,inty, intcolor)

??imagefill() 在image圖像的座標x,y(圖像左上角為0, 0)處以color顏色執行區域填充(即與x, y 點顏色相同且相鄰的點都會被填滿)。

??imagesetpixel--畫一個單一像素
??語法:boolimagesetpixel( resource image, intx, inty, intcolor )
? (圖像左上角為0,0)上畫一個點。
??imageline--畫一條線段
??語法:boolimageline( resource image, intx1, inty1, intx2, inty2, intcolor )
??image) x1,y1到x2,y2(影像左上角為0, 0)畫一條線段。
 imagerectangle--畫一個長方形

??語法:boolimagerectangle( resource image, intx1, inty1, intx2, inty2, intcol)
??imagerectangle() 用col顏色在image圖像中畫一個矩形,其左上角座標為x1, y11,下角座標為x2, y2。影像的左上角座標為0, 0。
??imagefilledrectangle--畫一個矩形並填入
??語法:boolimagefilledrectangle( resource image, intx1, inty1, intx2, inty2, intcolor image, intx1, inty1, intx2, inty2, intcolor )dr含color顏色填滿了的長方形,其左上角座標為x1,y1,右下角座標為x2,y2。0, 0 是圖像的最左上角
imagepolygon--畫一個多邊形

??語法: boolimagepolygon( resource image, array points, intnum_points, intcolor )
??imagepolygon() 在影像中建立一個多邊形。 points是一個PHP 數組,包含了多邊形的各個頂點座標,即points[0] = x0,points[1] = y0,points[2] = x1,points[3] = y1,以此類推。 num_points是頂點的總數。
??imagefilledpolygon--畫一多邊形並填入
??imagefilledpolygon--畫一多邊形並填入??imagefilledpolygon--畫一多邊形並填入
??語法:boolimagefilledpolygon( resource image, array points, intnum_points, intcolor )
? 。 points參數是一個依序包含有多邊形各頂點的x和y座標的陣列。 num_points參數是頂點的總數,必須大於3。

imageellipse--畫一個橢圓
??語法:boolimageellipse( resource image, intcx, intcy, intw, inth, intcolor )
為cx,cy(圖像左上角為0, 0)的橢圓。 w和h分別指定了橢圓的寬度和高度,橢圓的顏色由color指定。
??imagefilledellipse--畫一橢圓並填入
??語法:boolimagefilledellipse( resource image, intcx, intcy, intw, inth, intcolor )以cx,cy(圖像左上角為0, 0)為中心畫一個橢圓。 w和h分別指定了橢圓的寬和高。橢圓用color顏色填滿。如果成功則回傳TRUE,失敗則回傳FALSE。
imagearc--畫橢圓弧

??boolimagearc( resource image, intcx, intcy, intw, inth, ints, inte, intcolor )
?為0, 0)為中心在image所代表的圖像中畫一個橢圓弧。 w和h分別指定了橢圓的寬度和高度,起始和結束點以s和e參數以角度指定。 0°位於三點鐘位置,以順時針方向繪畫。
??imagefilledarc--畫一個橢圓弧且填充
??boolimagefilledarc( resource image, intcx, intcy, intw, inth, ints, inte, intcolor, intcx, intcy, intw, inth, ints, inte, intcolor, intcx, int所代表的圖像中以cx,cy(圖像左上角為0, 0)畫一橢圓弧。如果成功則回傳TRUE,失敗則回傳FALSE。 w和h分別指定了橢圓的寬和高,s和e參數以角度指定了起始和結束點。 style可以是下列數值位元或(OR)後的值:IMG_ARC_PIE、IMG_ARC_CHORD、IMG_ARC_NOFILL、IMG_ARC_EDGED。其中IMG_ARC_PIE 和IMG_ARC_CHORD 是互斥的;IMG_ARC_CHORD 只是用直線連接了起始和結束點,IMG_ARC_PIE 則產生圓形邊界(如果兩個都用,IMG_ARC_CHORD 生效)。 IMG_ARC_NOFILL 指明弧或弦只有輪廓,不填滿。 IMG_ARC_EDGED 指明用直線將起始和結束點與中心點相連,和IMG_ARC_NOFILL 一起使用是畫餅狀圖輪廓的好方法(而不用填充)
6 詞水平地畫一行字串
??語法:boolimagestring( resource image, intfont, intx, inty, string s, intcol)

??imagestring() 用colimagestrings 將字符串畫到顏色所代表的圖像的x,y座標處(這是字串左上角座標,整個圖像的左上角為0,0)。如果font是1,2,3,4 或5,則使用內建字體。

??imagestringup--垂直地畫一行字串

??語法:boolimagestringup( resource image, intfont, intx, inty, string s, intcol)

age
age串s垂直地畫到image所代表的圖像的x, y座標處(圖像的左上角為0, 0)。如果font是1,2,3,4 或5,則使用內建字體。

imagechar--水平地画一个字符
??语法:boolimagechar( resource image, intfont, intx, inty, string c, intcolor )
??imagechar() 将字符串c的第一个字符画在image指定的图像中,其左上角位于x,y(图像左上角为0, 0),颜色为color。如果font是1,2,3,4 或5,则使用内置的字体(更大的数字对应于更大的字体)。
??imagecharup--垂直地画一个字符
??语法:boolimagecharup( resource image, intfont, intx, inty, string c, intcolor )
??imagecharup() 将字符c垂直地画在image指定的图像上,位于x,y(图像左上角为0, 0),颜色为color。如果font为1,2,3,4 或5,则使用内置的字体。
??imagettftext--用TrueType 字体向图像写入文本
??语法:array imagettftext( resource image, float size, float angle, intx, inty, intcolor, string fontfile, string text )

例子:

<?<span>php
$im</span>= imagecreate(<span>150</span>,<span>150</span>); <span>//</span><span>创建一个150*150的画布</span>$bg= imagecolorallocate($im, <span>255</span>, <span>255</span>, <span>255</span><span>);
</span><span>//</span><span>设置画布的背景颜色为白色</span>$black = imagecolorallocate($im, <span>0</span>, <span>0</span>, <span>0</span>); <span>//</span><span>设置一个颜色变量为黑色</span>$<span>string</span>=<span>"</span><span>LAMPBrother</span><span>"</span>; <span>//</span><span>声明一个用于在图像中输出的字符串</span>imageString($im, <span>3</span>, <span>28</span>, <span>70</span>, $<span>string</span><span>, $black);
</span><span>//</span><span>水平将字符串$string输出到图像中</span>imageStringUp($im, <span>3</span>, <span>59</span>, <span>115</span>, $<span>string</span><span>, $black);
</span><span>//</span><span>垂直由下而上输出$string到图像中</span><span>for</span>($i=<span>0</span>,$j=strlen($<span>string</span>); $i<strlen($<span>string</span>); $i++,$j--<span>){
</span><span>//</span><span>使用循环单个字符输出到图像中</span>imageChar($im, <span>3</span>, <span>10</span>*($i+<span>1</span>), <span>10</span>*($i+<span>2</span>), $<span>string</span><span>[$i], $black);
</span><span>//</span><span>向下倾斜输出每个字符</span>imageCharUp($im, <span>3</span>, <span>10</span>*($i+<span>1</span>), <span>10</span>*($j+<span>2</span>), $<span>string</span>[$i], $black); <span>//</span><span>向上倾斜输出每个字符</span><span>}
header(</span><span>'</span><span>Content-type: image/png</span><span>'</span>); <span>//</span><span>设置输出的头部标识符</span>imagepng($im); <span>//</span><span>输出PNG格式的图片</span>?>

以上就介绍了动态图像处理 — php(34),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn