在php裏面包含php
header("content-type:image/png");
這樣輸出的圖像就不會亂碼了後面跟的Png也能夠改變爲本身想要輸出的圖像格式,在這個時候若是var_dump();那麼就會出錯誤,由於輸出的是圖片格式,須要用到var_dump()的時候註釋掉就能夠了。windows
imageCreateTrueColor(height,weidth);//建立畫布設置寬高
imageColorAllocate(img_resource,r,g,b);//設置畫布的顏色
imageFill(img_resource,x,y,color);
(x,y)表示從哪裏開始填充顏色不寫的話默認是黑色的數組
出現的問題:在設置起始填充位置時若是超出畫布大小則會以默認顏色填充瀏覽器
imagerectangle(img_resource,x1,y1,x2,y2,color);
x1,y1左上角性能
x2,y2右下角字體
imagefilledrectangle(img_resource,x1,y1,x2,y2,color);
空心編碼
imageellipse(img_resource,x,y,圓形的上下長,圓形的左右長,color);
x,y表示的圓心位置code
實心對象
imagefilledellipse(img_resource,x,y,圓形的上下長,圓形的左右長,color);
imageline(img_resource,x1,y1,x2,y2,color)
x1,y1起始位置座標圖片
x2,y2終點位置座標
imagesetthickness(img_resource,width);//設置繪製線條的寬度
在繪製某一圖形以前設置
要繪製兩個寬度不同的線條,案例以下
imagesetthickness($im,20); imageline($im,0,0,500,500,$blue); imagesetthickness($im,10); imageline($im,0,500,500,0,$blue);
這樣,兩條線就獲得了不一樣的寬度
imagesetstyle($im,[$red,$blue,$green]);
同樣在繪製前設定上面的案例指的是填充的是三色交替的樣子,設置完以後要想看到效果,
imageline(img_resource,x1,y1,x2,y2,IMG_COLOR_STYLED)//顏色資源要改爲這個常量IMG_COLOR_STYLED
imagesetpixel($im,x,y,color);
案例以下
<?php header('Content-type:image/JPG');//設置輸出的圖像格式 $im = imagecreatetruecolor(500,500);//建立畫布 $red=imageColorAllocate($im,225,0,0);//建立顏色對象 $green = imagecolorallocate($im, 0,225,0); $blue = imagecolorallocate($im, 0,0,225); $white=imagecolorallocate($im, 255,255,225); imageFill($im,0,0,$white);//畫布背景填充顏色,默認黑色 imagesetpixel($im,250,250,$red); for($i=0;$i<1000;$i++){ imagesetpixel($im,mt_rand(0,500),mt_rand(0,500),$red);//此處細節,mt_rand();性能高與rand(); } imagepng($im); ?>
同理把繪製點改成線就能出線干擾線,有興趣的能夠試試我下面的代碼跑着玩,每刷新一次又出現新的線條,頗有意思的
<?php header('Content-type:image/JPG');//設置輸出的圖像格式 $im = imagecreatetruecolor(500,500);//建立畫布 $red=imageColorAllocate($im,225,mt_rand(0,255),0);//建立顏色對象 $green = imagecolorallocate($im, 0,225,0); $blue = imagecolorallocate($im, 0,0,225); $white=imagecolorallocate($im, 255,255,225); imageFill($im,0,0,$white);//畫布背景填充顏色,默認黑色 imagesetpixel($im,250,250,$red); for($i=0;$i<100;$i++){ imagesetthickness($im,mt_rand(0,50)); $red=imageColorAllocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));//建立顏色對象 imageline($im,mt_rand(0,500),mt_rand(0,500),mt_rand(0,500),mt_rand(0,500),$red); } imagepng($im); ?>
顯示咱們已經用到過了的
imagepng($im);//在瀏覽器顯示資源
imagepng($im,'文件名.png');//保存資源,路徑在和代碼所在位置同一路徑
結束後記得清理內存,圖像會佔用內存
imagedestroy($im);//操做完成後清理內存
imagettftext($im,size,angle,x,y,color,$font,$text);
size:字體大小,angle:角度,起始打印位置(x,y),顏色color,font:字體資源路徑,text文字內容
案例以下
<?php header('Content-type:image/JPG');//設置輸出的圖像格式 $im = imagecreatetruecolor(500,500);//建立畫布 $red=imageColorAllocate($im,225,0,0);//建立顏色對象 $green = imagecolorallocate($im, 0,225,0); $blue = imagecolorallocate($im, 0,0,225); $white=imagecolorallocate($im, 255,255,225); imageFill($im,0,0,$white);//畫布背景填充顏色,默認黑色 $font="c:/windows/fonts/simhei.ttf";//設置字體路徑,我用的是windos自帶的字體 $text='hello';//設置文本內容 for($i=0;$i<mb_strlen($text,'utf-8');$i++)//這裏mb_strlen($text,'utf-8')這裏是爲了中文的輸出,按中文計算 //字符串長度 { $color=imageColorAllocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));//建立隨機的顏色對象 imagettftext($im,20,mt_rand(-80,80),20+20*$i,mt_rand(20,30),$color,$font,mb_substr($text,$i,1,'utf-8'));//這裏的mb_substr一樣是爲了中文的輸出 } imagepng($im); imagedestroy($im); ?>
mb_substr( $str, $start, $length, $encoding )
$str,須要截斷的字符串
$start,截斷開始處,起始處爲0
$length,要截取的字數
$encoding,網頁編碼,如utf-8,GB2312,GBK
可以裝下文字的盒子
imagettfbbox ($size,$angle,$fontfile,$text)
imagettfbbox() 返回一個含有 8 個單元的數組表示了文本外框的四個角: 0 左下角 X 位置 1 左下角 Y 位置 2 右下角 X 位置 3 右下角 Y 位置 4 右上角 X 位置 5 右上角 Y 位置 6 左上角 X 位置 7 左上角 Y 位置
知道了四個角的座標點咱們就能夠來求出文本所佔的寬高,從而控制文字所在位置
<?php header('Content-type:image/JPG');//設置輸出的圖像格式 $im = imagecreatetruecolor(500,500);//建立畫布 $red=imageColorAllocate($im,225,0,0);//建立顏色對象 $green = imagecolorallocate($im, 0,225,0); $blue = imagecolorallocate($im, 0,0,225); $white=imagecolorallocate($im, 255,255,225); imageFill($im,0,0,$white);//畫布背景填充顏色,默認黑色 $font="c:/windows/fonts/simhei.ttf"; $text='我愛你親愛的姑娘'; $size=30; $box=imagettfbbox($size,0,$font,$text); $width=$box[2]-$box[0]; $height=$box[1]-$box[7]; imagettftext($im,$size,0,250-$width/2,250,$red,$font,$text); imagepng($im); imagedestroy($im); ?>