成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

說說PHP作圖(三)

瀏覽:37日期:2024-02-20 11:57:22

上次說到用GD作各種幾何圖形,以及填充顏色。其中故意把這樣一個較復雜的情況留到后面,這就是任意多邊形和任意多邊形的填充顏色。

<? Header('Content-type: image/png'); $im = ImageCreate (200, 100); $col_blk = ImageColorAllocate($im, 0,0,0); $col_grn = ImageColorAllocate($im, 0,255,0); $parray = array(40,10,60,10,70,20,60,50,40,50,30,20); // 定義一個數組,12個成員是6個點的橫縱坐標。 ImagePolygon($im,$parray,6,$col_grn); // 這就是繪制任意多邊形的函數,$parray是剛才定義的數組, // 6表示六個點。注意六個點連成的是六邊形。 // 不必人為地為了閉合圖形而在最后增加一個與第一點相同的點。 ImagePNG($im); ImageDestroy($im)?>

你應該已經想到了,任意多邊形填充顏色的函數: <? Header('Content-type: image/png'); $im = ImageCreate (200, 100); $col_blk = ImageColorAllocate($im, 0,0,0); $col_orn = ImageColorAllocate($im, 255,192,0); $col_yel = ImageColorAllocate($im, 255,255,0); $col_red = ImageColorAllocate($im, 255,0,0); $col_grn = ImageColorAllocate($im, 0,255,0); $col_blu = ImageColorAllocate($im, 0,0,255);

$parray = array(40,10,60,10,70,20,60,50,40,50,30,20); ImageFilledPolygon($im,$parray,6,$col_grn); ImagePNG($im); ImageDestroy($im)?>

嗯。下面我們可以在圖象上寫字了。不過,先別高興,要想寫漢字還得費一些麻煩。這個以后再逐漸解釋。先看看怎么簡單地寫西文字符吧。

<? Header('Content-type: image/png'); $im = ImageCreate (200, 250); $col_blk = ImageColorAllocate($im, 0,0,0); $col_orn = ImageColorAllocate($im, 255,192,0); $str='This is a test.'; ImageString($im,1,10,10,$str,$col_orn); ImageString($im,2,10,30,$str,$col_orn); ImageString($im,3,10,60,$str,$col_orn); ImageString($im,4,10,100,$str,$col_orn); ImageString($im,5,10,150,$str,$col_orn); // 這里連續五次調用ImageString,在不同位置, // 分別用從小到大的字型輸出了字符串 $str。 // ImageString 函數只支持五種字型(1~5) ImagePNG($im); ImageDestroy($im)?>

再看:

<? //Header('Content-type: image/png'); $im = ImageCreate (200, 250); $col_blk = ImageColorAllocate($im, 0,0,0); $col_orn = ImageColorAllocate($im, 255,192,0); $str='This is a test.' ImageStringUp($im,1,10,180,$str,$col_orn); ImageStringUp($im,2,20,180,$str,$col_orn); ImageStringUp($im,3,40,180,$str,$col_orn); ImageStringUp($im,4,70,180,$str,$col_orn); ImageStringUp($im,5,110,180,$str,$col_orn); // 函數名換成了 ImageStringUp,用法不變。 // 是輸出豎排的文字。

ImagePNG($im); ImageDestroy($im)?>

在使用輸出字符的函數同時,如果能知道不同字型的字在圖象里要占用的寬度、高度,對于安排輸出字符的位置將是多么方便的啊!PHP提供給我們了:ImageFontWidth()和ImageFontHeight(),其參數很簡單,只有一個:即字型的編號。例如ImageFontWidth(5)就是取得5號字每個字符的寬度,ImageFontHeight(3)就是取得3號字每個字符的高度。這么簡單,就不舉例了,等一下在后面的代碼中還有用到。

跟輸出字符串類似,ImageChar和ImageCharUp輸出單個字符,用途比較少,甚至可以不用——無論字符還是字符串,都用ImageString和ImageStringUp就可以了嘛!

下面,我就利用我做過的繪制股票K線分析圖的其中一部分代碼,把前面講到的內容系統地應用一下。因為其中涉及數據庫,不能把原始代碼拿過來給大家拿回去測試。只能構造一些數據,模擬從數據庫里取得的股市行情。鑒于這里懂股票K線的人可能不多,大家可能不知道K線圖應該怎么畫法。然而,我也不能在這里講K線具體是怎么回事,只是介紹這樣一系列方法。等畫好以后,你肯定可以看出,以前確實見過這樣的圖。

<?phpHeader('Content-type: image/png');

$im = ImageCreate(640,260);$bkground = ImageColorAllocate($im,255,255,255);$data = ImageColorAllocate($im,0,0,0);$gird = ImageColorAllocate($im,200,200,160);$upline = ImageColorAllocate($im,255,0,0);$dnline = ImageColorAllocate($im,0,175,175);$d5line = ImageColorAllocate($im,255,127,0);$d20line = ImageColorAllocate($im,0,0,127);$d10line = ImageColorAllocate($im,255,0,255);// 先定義好繪各種對象所用的顏色。

for($i=20;$i<=220;$i+=25) ImageLine($im, 60, $i, 560, $i, $gird);for($j=60;$j<=560;$j+=25) ImageLine($im, $j, 20, $j, 220, $gird);// 事先計算好位置、格子寬度,用for循環畫線,省事多了。

$zzg=10.55$zzd=7.63;$lzg=10350;// 假設的股市數據,// $zzg是需要分析的這一段時間的最高價,假設是10.55元。// $zzd是需要分析的這一段時間的最低價,假設是7.63元。// $lzg是需要分析的這一段時間的最高成交量,假設是10350手。// 這是計算坐標網格的“刻度”的重要數據。$bl=$zzg-$zzd;// 最高價跟最低價的差額。根據它跟網格總高度之間的比例,// 就可以得出一個實際的價格在網格里所處的位置。

for($i=1;$i<=7;$i++) { $y=$i*25-10; // 根據網格線的位置計算標注刻度的合適高度(縱坐標)。 $str=Number_Format($zzg-($i-1)/6*$bl,2,'.',','); // 計算每根刻度線對應的價格、并格式化該字符串。 $x=55-ImageFontWidth(2)*StrLen($str); // 根據這個字符串將要占用的寬度,計算出合適的橫坐標。 ImageString($im, 2,$x, $y,$str, $data); // 寫出這個字符串。 }

$str=Number_Format($lzg,0,'.',',');ImageString($im,2,564,164,$str,$data);$str=Number_Format($lzg/2,0,'.',',');ImageString($im,2,564,189,$str,$data);// 由于寫成交量的刻度只有兩處,用循環寫就不合算了。// 如果數量比較多,也應該用循環。

// 由于一張K線圖要畫無數根小K線柱,所以,把畫一根小K線柱寫成函數function kline($img,$kp,$zg,$zd,$sp,$cjl,$ii)// 參數:$img 圖象;$kp $zg $zd $sp 是開盤、最高、最低、收盤;// $cjl 成交量;$ii 計數器,表示K線柱的序號。{ global $bl,$zzd,$lzg; // 聲明該函數里用到的$bl,$zzd,$lzg三個變量是全局變量。 $h=150// K線柱區域高度是 150。 $hh=200; // K線柱區域、成交量柱區域總高度是 200。 if($sp<$kp) $linecolor = ImageColorAllocate($img,0,175,175); // 如果收盤價低于開盤,是陰線,用青色 else $linecolor = ImageColorAllocate($img,255,0,0); // 否則為陽線,用紅色。 $x=58+$ii*4; // 根據K線柱序號計算橫坐標。 $y1=20+$h-($kp-$zzd)/$bl*$h; // 根據開盤價計算對應縱坐標。 $y2=20+$h-($sp-$zzd)/$bl*$h; // 根據收盤價計算對應縱坐標。 $y3=20+$h-($zg-$zzd)/$bl*$h; // 根據最高價計算對應縱坐標。 $y4=20+$h-($zd-$zzd)/$bl*$h; // 根據最低價計算對應縱坐標。 $y5=20+$hh-$cjl/$lzg*($hh-$h); // 根據成交量計算對應縱坐標。

if($y1<=$y2); ImageFilledRectangle($img,$x-1,$y1,$x+1,$y2,$linecolor); else; ImageFilledRectangle($img,$x-1,$y2,$x+1,$y1,$linecolor); // 橫坐標減1到加1,跨度為3。即繪寬度為3的小填充矩形。 // 高度和縱坐標則是由開盤、收盤價決定的。 // 經測試發現,這個函數必須是左上點坐標寫在右下點坐標之前, // 而非自動判斷兩點孰為左上,孰為右下。 ImageFilledRectangle($img,$x-1,$y5,$x+1,220,$linecolor); // 根據成交量繪成交量柱體。 ImageLine($img,$x,$y3,$x,$y4,$linecolor); // 根據最高價、最低價繪上下影線。}

// 試畫一根。開盤 8.50 最高 8.88 最低 8.32 收盤 8.80 成交 6578手。kline($im,8.50,8.88,8.32,8.80,6578,1);// 再畫一根。開盤 8.80 最高 9.50 最低 8.80 收盤 9.50 成交 8070手。// 光頭光腳的大陽線啊!kline($im,8.80,9.50,8.80,9.50,8070,2);// 再來一根陰線。開盤 9.80 最高 9.80 最低 8.90 收盤 9.06 成交 10070手。// 賠了!昨天拋掉多好呀。kline($im,9.80,9.80,8.90,9.06,10070,3);

// ……

ImagePNG($im);ImageDestroy($im);?>

當然,要每一天的數據都這么寫,太麻煩了。我做的是從數據庫取數據的。

這一次就說到這里。

標簽: PHP
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲视频图片小说| 欧美色图天堂网| 91精品国产一区二区| 亚洲丰满少妇videoshd| 9色精品在线| 一区二区三区在线观看视频| 亚洲国内欧美| 亚洲黄色录像片| 亚洲国产合集| 亚洲老司机在线| 一区精品久久| 国产香蕉久久精品综合网| 成人免费毛片嘿嘿连载视频| 欧美一级午夜免费电影| 国产精品亚洲专一区二区三区 | 欧美视频一区二区三区四区| 亚洲a一区二区| 久久久精品国产一区二区三区| 日韩高清中文字幕一区| 一本大道av一区二区在线播放 | 国产精品中文字幕日韩精品| 欧美日韩国产另类一区| 国模无码大尺度一区二区三区| 欧美日韩你懂得| 精品一区二区三区欧美| 制服丝袜成人动漫| 高清不卡在线观看| 久久奇米777| 亚洲午夜精品久久| 玉足女爽爽91| 久久一区中文字幕| 极品少妇xxxx精品少妇| 日韩欧美国产wwwww| 色综合色综合色综合色综合色综合| 久久精品一区二区三区不卡牛牛| 91免费版pro下载短视频| 中文字幕视频一区二区三区久| 国产一区二区高清| 美腿丝袜在线亚洲一区| 日韩一区二区在线看| 色综合夜色一区| 亚洲视频在线一区| 一本久久a久久精品亚洲| 国产一区视频在线看| 精品剧情v国产在线观看在线| 91色视频在线| 亚洲美女淫视频| 在线亚洲精品福利网址导航| 国产精品一区二区无线| 国产午夜亚洲精品羞羞网站| 91久久精品www人人做人人爽 | 午夜视频一区二区三区| 在线观看视频一区| 成人激情校园春色| 亚洲欧美日韩一区二区| 玖玖在线精品| 从欧美一区二区三区| 中文在线一区二区| 老鸭窝毛片一区二区三区| 国产呦精品一区二区三区网站| 精品电影一区二区三区| 影音先锋中文字幕一区| 视频在线观看一区| 日韩欧美电影一二三| 亚洲精品激情| 国模冰冰炮一区二区| 国产欧美综合在线| 久久精品二区| 岛国精品一区二区| 亚洲精品免费视频| 91 com成人网| 亚洲国产欧美不卡在线观看| 久久成人免费网站| 欧美国产日产图区| 色欧美日韩亚洲| 91尤物视频在线观看| 亚洲一级电影视频| 日韩欧美激情一区| 国产深夜精品| 成人午夜精品一区二区三区| 一区二区三国产精华液| 日韩一区二区三区电影在线观看| 亚洲区一区二| 国产精品亚洲视频| 亚洲一区二区三区美女| 日韩美女一区二区三区四区| 国产亚洲午夜| 成人在线一区二区三区| 一区二区三区在线免费视频 | 精品国产伦理网| 免费在线成人| av爱爱亚洲一区| 偷窥国产亚洲免费视频| 国产视频不卡一区| 欧美三级三级三级| 亚洲私拍自拍| 国产精品99久久久久久久女警| 亚洲猫色日本管| 日韩欧美aaaaaa| 久久久久久穴| 欧美日韩另类丝袜其他| 久久精品av麻豆的观看方式| 中文字幕一区二区三区不卡在线| 欧美男人的天堂一二区| 国产日韩精品视频一区二区三区| 国产999精品久久| 亚洲成人7777| 欧美激情一区二区三区全黄| 精品视频色一区| 亚洲日本欧美在线| 不卡的看片网站| 开心九九激情九九欧美日韩精美视频电影 | 久久伊人中文字幕| 91福利国产精品| 日韩一级大片| 91在线观看视频| 韩国v欧美v日本v亚洲v| 亚洲精品视频在线观看网站| 日韩欧美在线网站| 91精品福利视频| 国产综合自拍| 成人午夜激情影院| 久久精品国产99国产精品| 一区二区三区在线视频观看58| 2021国产精品久久精品| 欧美裸体bbwbbwbbw| 久久久综合网| 国产日韩欧美二区| 亚洲午夜精品国产| 色综合久久综合网欧美综合网| 国产精品456| 日本美女一区二区三区| 国产精品久久久久aaaa| 日韩三级视频在线看| 欧美色视频在线观看| 亚洲专区在线| 亚洲精品精选| 欧美日韩精品久久| 99re视频精品| 国产成人8x视频一区二区 | 一区二区自拍| 欧美久久综合| 欧美 日韩 国产一区二区在线视频 | 日本大香伊一区二区三区| 伊人精品视频| 欧美一区1区三区3区公司| 国产成人亚洲精品青草天美 | 国产91色综合久久免费分享| 狠狠狠色丁香婷婷综合激情| 日本aⅴ精品一区二区三区| 午夜亚洲福利老司机| 亚洲精品国产一区二区精华液| 国产蜜臀av在线一区二区三区| 日韩一卡二卡三卡四卡| 在线播放一区二区三区| 欧美久久婷婷综合色| 欧美日韩三级在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久天天综合| 日本高清成人免费播放| 色呦呦一区二区三区| 久久精品主播| 蜜桃av一区| 男女av一区三区二区色多| 免费日韩视频| 久久婷婷人人澡人人喊人人爽| 亚洲一区二区在| 国产精品制服诱惑| 午夜在线视频观看日韩17c| 国产精品综合| 美日韩精品视频| 91精品福利视频| 欧美探花视频资源| 欧美人体做爰大胆视频| 欧美老人xxxx18| 欧美一区二区福利视频| 日韩你懂的在线观看| 337p日本欧洲亚洲大胆精品| 久久久久亚洲综合| 国产日韩欧美麻豆| 中文字幕一区日韩精品欧美| 亚洲欧美日韩国产中文在线| 亚洲免费观看高清完整版在线| 亚洲精品伦理在线| 日韩精品国产精品| 久久99久久99| 国产 日韩 欧美大片| av中文字幕在线不卡| 欧美在线视频二区| 激情视频一区二区三区| 国产偷久久久精品专区| 欧美亚洲一级| 欧美伊人久久大香线蕉综合69| 欧美视频精品在线| 日韩一区二区三区高清免费看看| 26uuu亚洲| 国产精品高潮呻吟| 亚洲电影一区二区三区| 男女男精品视频网| 成人一区二区视频|