PHP如何生成動態圖象
動態圖像是怎樣被生成的?
讓我們先看看下面的代碼,如果第一次瀏覽該頁或者用戶置表單為空,則默認值為"Go!";如果用戶輸入了信息并提交表單,這段代碼將被重新調用且進行初始化。
<?
If (!isset($string)||$string==""){$string="Go!";}
?>
<form action=button.php>
Button text;
<input type=text name=string value="<? pint $string; ?>">
<input type=submit>
</form>
這個文件的其余的部分就是簡單的在表格中輸出一些元素和調用其他的文件。
現在,我們開始制作按鈕。第一個例子是生成一個黑邊兒綠底兒的橢圓文字按鈕。我們通過一個標準的<IMG>標簽兒來顯示按鈕圖象;SRC的值是生成按鈕圖象的文件。
<img src="green_ellipse.php?string=<? print rawurlencode($string); ?>">
下面讓我們看看生成橢圓的文件"green_ellipse.php"
生成橢圓
這里列出了green_ellipse.php的代碼,我們以Header()開頭,可以向Apache服務器發從一個HTTP的頭信息,這一步告訴Server使用的什么數據,本例中我們使用的是GIF的格式:
<?
Header("Content-Type: image/gif");
//現在我們將生成一幅空的圖象,并且將其賦值給變量$id:
$id=ImageCreate($img_width,$img_height);
//圖像潤色
……
//使用內嵌的五號字在按鈕上寫上文字,最后給按鈕上的文字設置變量$black的顏色:
ImageString($id, 5,($img_center_x-($str_width/2+1), img_center_y-($str_height/2)), $string, $black);
//最后,把圖象從內存中道出到標準輸出緩沖--這是Server將得到的圖象的內容:
ImageGIF($id);
?>
這個程序只適合像"Go!"這樣短的按鈕,像"Please click here!"這樣的長字符串就會不好看。沒關系,看看下面這個圓邊矩形。
生成更美觀的圖樣
這個例子將生成一個黑邊兒,黃色棱角的圖樣。你可以看到這種方法比第一個例子更適合長字符串的按鈕。
如果你看了前面的代碼,這里的代碼你就容易看懂了。我們將從生成按鈕的形狀開始。
在每一個字符串的結尾處建立20個象素的邊緣,并在字符串的上下各建10個象素的邊緣:
<?php
初始化,參數設定
……
在圖象的左端畫了一個半圓,再從六點通過九點畫到12點:
ImageArc($id,20,$img_center_y,20,$str_height+20,90,270,$black);
對于右端,是同上面一樣的,只是從右端20象素開始畫起,并且掠過相反的半圈兒--從12點通過3點到六點:
ImageArc($id,($img_width-20),$img_center_y,20,$img_height+20,270,90,$black);
最后,從一端的端頂向另一端畫一條直線,同樣在底部也畫一條直線。這樣閉合了形狀的內部。
ImageLine($id,20,0,($img_width-20),0,$black);
ImageLine($id,20,$img_height-1,($img_width-20),$img_height-1,$black);
在這個區域里填充變量$yellow所定義的顏色,并充滿整個區域:
ImageFillToBorder($id,$img_center_x,$img_center_y,$black,$yellow);
再將字符串寫入到圖象中,之后向標準輸出打印圖象:
ImageString($id, 5, ($img_center_x-($str_width/2)+1,($img_center_y-($str_height/2)), $string, $black);
ImageGIF($id);
?>
如何修改一幅已經存在的圖象?
在這里,我們將修改一幅已經存在的圖象,將其存為一幅新的圖象文件,同時顯示一幅動態的圖象。首先,我們把mymonkdy.gif調入內存,并將其賦值給$id。
<?
$id=ImageCreateFromGif("mymonkey.gif");
//現在我們設置字體顏色,并將它放到圖象上。
$yellow=ImageColorAllocate($id,,255,255,0);
//以左上角為(0,0)點,從(10,20)地方開始用內嵌四號字體寫上字符串,同時我將它設為大寫,并加了感嘆號,以使其顯得更加生動。
ImageString($id,4,10,20,strtoupper($string."!"),$yellow);
//現在我們將圖象從內存存入文件http://edu.cnzz.cn/NewsInfo/newmonkey.gif。
ImageGIF($id,"http://edu.cnzz.cn/NewsInfo/newmonkey.gif");
?>
這樣就差不多了:http://edu.cnzz.cn/NewsInfo/newmonkey.gif可以用來顯示了,瀏覽器的設置是這樣的:
<td>
<img src="http://edu.cnzz.cn/NewsInfo/newmonkey.gif" border=0>
</td>
</tr>
</table>
如何在PHP沒有GD支持的情況下做統計數據的圖形顯示?
利用HTML對圖形的控制完全可以達到我們的需要,開始之前先讓我們回顧一下HTML對圖形控制的語法:
< IMG SRC=# ALT=# Width=# Height=# ...... >
我們需要作的就是對Width和Height兩個參數的控制,下面我們給個例子:
<?php
$rows[]={12,45,43,23,32,87,14,22,19,40}; //數組初始化,可以從數據取出。
$sums=0;
for ( $i = 0 ; $i < 10 ;$i++ ) $sums+=$rows[$i]; //求和
for ( $i = 0 ; $i < 10 ;$i++ ) {
if ($sums * $rows[$i] ) { //為0則不進行處理,避免0除溢出
$tmp=$rows[$i]/$sums*100;
echo " <img src=http://edu.cnzz.cn/NewsInfo/bar.gif height=9 width=".$tmp.">";
//輸出圖形,http://edu.cnzz.cn/NewsInfo/bar.gif是只有一個點的圖形文件,這里是橫向圖形,縱向改height即可.
echo " (".sprintf('%01.2f',$tmp)."%)";
echo "<BR>";
}
}
?>
怎樣實現PHP和Flash動畫的交互操作?
我們用一個flash加上php做身份認證的例子說明一下:
首先在主場景中加入三個textfield和一個按鈕。
然后就是給這三個textfield付上名稱。
第一個是 name,用來輸入用戶名
第二個是 password,用來輸入密碼
第三個是output,用來顯示判斷結果。
最后就是給按鈕的點擊加上動作。
Load Variables ("check.php", 1, vars=POST)
這個action的內容很多,第一是把主場景的幾個變量值傳給check.php.第二還要從check.php中再返回output的值來。
<?
.....
....
///用sql 語句,找出$name的密碼賦給 password
//判斷第二個文本框的內容,密碼是否第一個文本文本框name找到的密碼
if($passwd==$password)
echo "output=welcome ".$name." this is a program by php and flash"; //如果等于的話,就將output文本框的值等于歡迎信息
else
echo "output=sorry , ".$name." your password is not correct"; //如果不等于,就顯示出錯信息。
?>
關鍵字:PHP、圖象、信息
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解