?? cgi2.htm
字號:
<html><!-- #BeginTemplate "/Templates/index.dwt" --><head><meta http-equiv=Content-Type content="text/html; charset=gb_2312-80"><title>ChinaPerl</title>
<LINK rel=stylesheet href=mystyle.css type=text/css>
</head><body>
<table border=0 cellspacing=0 bgcolor=#80FFFF width=100%>
<tr>
<td align=left rowspan=2 width=150>
<div align="center"><img src=image/perl.gif height=85 width="85"></div>
</td>
<td align=center><img src=image/perl.gif height=85 width="85"></td>
</tr><tr>
<td colspan=2 align=center> </td>
</tr></table>
<table border=0 width=100% height=400 cellspacing=0 cellpadding=0>
<tr>
<td width=20% valign=top bgcolor="#dddddd">
<table border=0 width=100% cellpadding=0><tr><td width=5%></td>
<td width=95%>
<p align=center>Perl 5教程<br>
<a target=_blank href=http://flamephoenix.126.com>by flamephoenix</a><a href="http://perl.yesky.net"><br>
<font color="red">修訂 by RNY<br>
</font></a>2000-08-30</p>
<p align=center><a href="index.htm">目錄</a></p>
<p align=center>第一部分 Perl語言</p>
<p><a href=perl1.htm>第一章 概述</a></p>
<p><a href=perl2.htm>第二章 簡單變量</a></p>
<p><a href=perl3.htm>第三章 操作符</a></p>
<p><a href=perl4.htm>第四章 列表和數組變量</a></p>
<p><a href=perl5.htm>第五章 文件讀寫</a></p>
<p><a href=perl6.htm>第六章 模式匹配</a></p>
<p><a href=perl7.htm>第七章 控制結構</a></p>
<p><a href=perl8.htm>第八章 子程序</a></p>
<p><a href=perl9.htm>第九章 關聯數組(哈希表)</a></p>
<p><a href=perl10.htm>第十章 格式化輸出</a></p>
<p><a href=perl11.htm>第十一章 文件系統</a></p>
<p><a href=perl12.htm>第十二章 引用(指針)</a></p>
<p><a href=perl13.htm>第十三章 面向對象編程</a></p>
<p><a href=perl14.htm>第十四章 包和模塊</a></p>
<p><a href=func.htm>附錄一 函數集</a></p>
<p align=center>第二部分 Perl的CGI應用</p>
<p><a href=cgi1.htm>第一章 cgilib例</a></p>
<p><a href=cgi2.htm>第二章 動態創建圖像</a></p>
<p><a href=cgi3.htm>第三章 計數器的編寫方法</a></p>
<p><a href=cgi4.htm>第四章 Web Server設置</a></p>
第五章、...<br></td></tr></table></td>
<td width=80% valign=top>
<div align="center"></div>
<table border=0 width=100% cellpadding=0>
<tr bgcolor="#00FF80">
<td colspan="2">
<div align="center"> Perl教程 | <a href="perl5manual.zip">下載全文</a>
| <a target=_blank href=http://www.turbolinux.com.cn/cgi-bin/linux/wwwthreads.pl?action=list&Board=perl>Perl論壇</a>
| <a href="http://perl.yesky.net">推薦站點</a> | 關于我們 </div>
</td>
</tr>
<tr>
<td colspan="2"><!-- #BeginEditable "body" -->
<p align=center>第二章 動態創建圖象(未定稿)</p>
<p align=center><a target=_blank href=http://flamephoenix.126.com>by
flamephoenix</a></p>
<br>
“動態文檔”不僅指文本,CGI程序可以創建圖象、聲音等各種媒體。你只須輸出相應的MIME頭、一行空行及原始數據即可。<br>
下例的image.cgi將裝載一個GIF圖像文件并送到瀏覽器顯示:
<blockquote>#!/usr/bin/perl<br>
<br>
$file = '/usr/local/etc/httpd/htdocs/images/picture.gif';<br>
<br>
print "Content-Type: image/gif\n\n";<br>
open(GIF,"<$file") || die "Can't open GIF\n"; <br>
while (read(GIF,$buffer,16384)) {<br>
print $buffer;<br>
} </blockquote>
image.cgi首先發送MIME頭說明(Content-Type),然后讀取文件內容并輸出。這段程序對$file變量和Content-Type類型略加修改就可以發送聲音或影像文件。<br>
那么怎樣把CGI程序創建的圖像嵌到頁面中呢?SSI是不行的,方法是用<img>標簽,語法如:<br>
<img src="/cgi-bin/image.cgi"><br>
僅就顯示picture.gif這幅圖像而言,用上述的image.cgi是沒有什么意義的,更恰當的方式是這樣使用:<br>
<img src="/images/picture.gif"><br>
但是,image.cgi可以擴展功能來做更多的事。例如它可以從多個圖像文件中隨即地選擇一個來顯示,那么,每一次訪問該頁面時都會出現不同的圖像。<br>
計數器程序通常利用<img>標簽的這一特性,尤其是那些不允許解析HTML和SSI的服務器特別實用。服務器端不解析HTML文件可以降低服務器的負載。<br>
此外,除了簡單的裝載并顯示已有的圖像文件外,可以真正的動態生成所需的圖像。你可以設計一個CGI程序根據不同的參數及用戶定義的一些細節來實時創建相應的圖像(如圖表)并顯示。這種程序的復雜性在于圖像的生成而不在于將圖像輸出給瀏覽器。幸運的是,有一些庫提供了這樣的接口,如Thomas
boutell的gd圖像庫,這是生成GIF圖像的一個出色工具,可以從<a target=_blank href="http://www.boutell.com/gd/">http://www.boutell.com/gd</a>來下載。它是用C語言寫的,但是有Perl接口庫<a target=_blank href="http://www-genome.wi.mit.edu/ftp/pub/software/WWW/GD.html">gd.pm</a>,還有基于gd支持多種語言的接口庫<a target=_blank href="http://s27w007.pswfs.gov/tgd/">tgd</a>和<a target=_blank href="http://www.unimelb.edu.au/fly/fly.html">fly</a>。詳細情況見上述gd主頁。<br>
下面是一個簡單的用位圖動態生成圖像的計數器程序,對理解上述描述應該會有所幫助。(<a href="count.zip">源代碼下載</a>)<br>
您是第<img src="http://thor.prohosting.com/~flame_ph/cgi-bin/count.pl">位訪問本網頁的人。<br>
<br>
附:GIF的說明<br>
現在流行著一種趨勢,即遠離GIF格式而采用Portable Network Graphic格式(PNG),這種變化出于技術和法律兩個方面的考慮。1995年1月1日,Unisys聲稱他們有權要求使用LZW壓縮算法的軟件公司要經過他們的許可或付給他們報酬,因為他們擁有專利使用權。而GIF格式正是使用這種算法。所以,你所編寫的任何用于商業應用程序中的GIF圖像(包括以CGI/WWW為基礎的那些文件),都必須購買許可證或支付費用。許多軟件包不再壓縮GIF文件(這樣會使圖像變得很大),或者把GIF文件及其支持軟件全部去掉。PNG使用非專利的壓縮算法,從而避免了這些麻煩。在技術方面,PNG提供了較好的壓縮算法(無損失,像GIF一樣,但不像JPEG。JPEG在壓縮時會丟失數據)、二維交互以及24位和48位真彩支持?,F在,很少有瀏覽器支持內插的PNG圖像,但不久的將來,這種情況很可能會改變。GD圖形庫文件說明了PNG支持即將來臨。<br>
<p align="center"><a href="cgi1.htm">上一章</a> <a href="cgi3.htm">下一章</a>
<a href="index.htm">目錄</a></p>
<p align=center> </p>
<!-- #EndEditable --></td>
</tr>
</table>
</td></tr></table></body><!-- #EndTemplate --></html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -