> 백엔드 개발 > PHP 튜토리얼 > php绘图,请圣人修改。

php绘图,请圣人修改。

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-06-13 11:36:46
원래의
917명이 탐색했습니다.

php绘图,请高人修改。。

<?<br />$kuan=30;//色柱宽<br />$jiange=20;//色柱间间隔<br />$zuo=20;//左侧留空<br />$you=20;//右侧留空<br />$shang=20;//上留空<br />$xia=10;//下留空<br />$zuidashujuzhi=1;//初始化纵轴最大数据值<br />if ($_GET["a"]=="") die("error id:0");<br />$shuju=split(",",$_GET["a"]);<br />//得到最大值<br />for($i=0;$i<count($shuju);$i++){<br />if(!is_numeric($shuju[$i])) die("error id:1");<br />if($shuju[$i]>$zuidashujuzhi) $zuidashujuzhi=$shuju[$i];<br />}<br />//计算图像宽度 <br />$img_kuan=$zuo+$you+$jiange+count($shuju)*($kuan+$jiange);<br />//图像高 <br />$img_gao=170;<br />//存储色柱高度的数组<br />$zhugaodu = array();<br />$image = imagecreate($img_kuan,$img_gao);<br />$white = imagecolorallocate($image, 0xEE, 0xEE, 0xEE);<br />//色柱颜色<br />$shuju_yanse =array(<br />imagecolorallocate($image, 0x97, 0xbd, 0x00),<br />imagecolorallocate($image, 0x00, 0x99, 0x00),<br />imagecolorallocate($image, 0xcc, 0x33, 0x00),<br />imagecolorallocate($image, 0xff, 0xcc, 0x00),<br />imagecolorallocate($image, 0x33, 0x66, 0xcc),<br />imagecolorallocate($image, 0x33, 0xcc, 0x33),<br />imagecolorallocate($image, 0xff, 0x99, 0x33),<br />imagecolorallocate($image, 0xcc, 0xcc, 0x99),<br />imagecolorallocate($image, 0x99, 0xcc, 0x66),<br />imagecolorallocate($image, 0x66, 0xff, 0x99)<br />);<br /><br /><br /><br />//坐标轴颜色<br />$zuobiao_yanse = imagecolorallocate($image, 0x00, 0x00, 0x00);<br />//横轴<br />imageline ( $image, $zuo, $img_gao-$xia, $img_kuan-$you/2, $img_gao-$xia, $zuobiao_yanse);<br />//纵轴<br />imageline ( $image, $zuo, $shang/2, $zuo, $img_gao-$xia, $zuobiao_yanse);<br /><br /><br /><br />//纵轴刻度,纵轴上共标注4个点,所以这里分别计算即可<br />imageline ( $image, $zuo, $shang, $zuo+6, $shang, $zuobiao_yanse);<br />imagestring ( $image, 3, $zuo/4, $shang,round($zuidashujuzhi), $zuobiao_yanse);<br />imageline ( $image, $zuo, $shang+($img_gao-$shang-$xia)*1/4, $zuo+6, round($shang+($img_gao-$shang-$xia)*1/4), $zuobiao_yanse);<br />imagestring ( $image, 3, $zuo/4, $shang+($img_gao-$shang-$xia)*1/4,round($zuidashujuzhi*3/4), $zuobiao_yanse);<br />imageline ( $image, $zuo, $shang+($img_gao-$shang-$xia)*2/4, $zuo+6, $shang+($img_gao-$shang-$xia)*2/4, $zuobiao_yanse);<br />imagestring ( $image, 3, $zuo/4, $shang+($img_gao-$shang-$xia)*2/4,round($zuidashujuzhi*2/4), $zuobiao_yanse);<br />imageline ( $image, $zuo, $shang+($img_gao-$shang-$xia)*3/4, $zuo+6, $shang+($img_gao-$shang-$xia)*3/4, $zuobiao_yanse);<br />imagestring ( $image, 3, $zuo/4, $shang+($img_gao-$shang-$xia)*3/4,round($zuidashujuzhi*1/4), $zuobiao_yanse);<br /><br /><br /><br />//得到每个柱的高度<br />for($i=0;$i<count($shuju);$i++){<br />array_push ($zhugaodu, round(($img_gao-$shang-$xia)*$shuju[$i]/$zuidashujuzhi));<br />}<br />//画数据柱<br />$shuju_yanse_int=0;<br />for($i=0;$i<count($shuju);$i++){<br />imagefilledrectangle( $image,$zuo+$jiange+$i*($kuan+$jiange),$shang+($img_gao-$shang-$xia)-$zhugaodu[$i],$zuo+$jiange+$i*($kuan+$jiange)+$kuan,($img_gao-$xia)-1 ,$shuju_yanse[$shuju_yanse_int]);<br />//因为只定义了10种颜色,所以这里做一个循环  <br />if($shuju_yanse_int==9){<br />$shuju_yanse_int=0;<br />}else{<br />$shuju_yanse_int++;<br />}<br />}<br />//标注数据柱上方数据值<br />for($i=0;$i<count($shuju);$i++){<br />imagestring ( $image, 1, $zuo+$jiange+$i*($kuan+$jiange)+2,$shang+($img_gao-$shang-$xia)-$zhugaodu[$i]-10,$shuju[$i], $zuobiao_yanse);<br />}<br />header('Content-type: image/png');<br />imagepng($image);<br />imagedestroy($image);<br />?>
로그인 후 복사


这样子可以生成

img.php?a=5.4,2,30.2,4,0,6,7.7,3.8,2,3,4
用下面这个参数可以得到上面的图片。。
我现在想获取到比如5.4里面,我又分成三个属性,并且显示每个立柱的名字,请问该如何改进代码。


并且下面的类型个数不限制,比如有钢管,铝管,铜管,金管,。。。。。有若干个。
但是属性只有三个。。。。每个都为整数。。。

求高人给帮忙修改一下代码,或者给我一个简便的代码。。感谢了。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿