控制世界—或者至少控制您的圖像
作為一名站點開發人員或頁面作者,迎合所有這些喜好是很困難的。要手工執行該工作,必須將站點上的每個圖像轉換成您的網站支持的圖像大小。然後,需要調整站點上每個頁面中的圖像標記,使每個標記都正確地反映圖像的大小。不能只更改 HTML img 標記的寬(width)和高(height),而不更改圖像:這會導致低帶寬用戶下載大的圖像,並在客戶機端重新調整它的大小。如果提供了八個常用的圖像大小,很容易可以看到每個圖像將如何需要八個縮放大小,以及每個頁面將如何需要八個版本的圖像標記。這類圖像管理很乏味而且容易出錯,很簡單地就能明白為什麼大多數網站都不提供多個圖像大小。
問題不在於技術:使用 Java 編程將圖像轉換成各種大小或格式是很容易的。問題也不在於服務:使用 Web 服務器定制頁面以滿足個別讀者的需要是很常見的。相反,問題在於以易於部署和管理的形式組合技術和服務。
本文推薦了一種解決方案,使用 JavaServer Pages(JSP)標記管理您的圖像。例如,不是象下面那樣,在 HTML 中編碼圖像標記,並且為每個圖像大小提供多個版本:
<img src="images/LazyDog.jpg" width="800" height="600" >
提供一個可根據讀者首選項自動調整圖像大小的標記更有意義,如下所示:
<util:imagesizer src="images/LazyDog.jpg"/>
讓讀者從許多大小中選擇並且讓他們的首選項影響站點上的所有圖像,這是可能的,如圖 1 中的樣本浏覽器圖像所示。插入寬和高屬性,並且消除手工編輯這些標記的苦差事也是可能的。
圖 1. 帶有圖像首選項的示例 JSP 頁面(笑一個)
可能您以前從未看到過JSP定制標記,讓我們簡單地研究一下本示例中的語法。JSP定制標記看上去非常象 HTML 標記,但有下列區別:
有一個由標記開發人員創建的標記名 imagesizer。
標記有一個前綴 util,它將標記集組合成庫,這非常類似於 Java 編程中的包名。您可以創建新的前綴,或者使用與庫一起提供的缺省名。
該標記擁有一個新的類似 XML 的結束標記“/>”。
與 HTML 標記一樣,JSP 標記可以擁有任意數量的屬性,如這裡顯示的 src 屬性,它們可以包含主體,主體中可包含其它標記。由於我們正在模仿 HTML 的 img 標記,所以我們的 JSP 圖像縮放標記將沒有主體。
當 JSP 頁面使用定制 image-sizer 標記時,標記的 Java 實現找到圖像文件,將其轉換成合適的大小(在這一過程中可能會添加版權或水印徽標),然後將圖像提供給讀者。該標記使站點管理器不必在發布前轉換圖像。它還簡化了編寫 Web 頁面的工作,因為處理許多圖像大小首選項只需要一個頁面。最後,也是最重要的,為您的所有站點圖像提供這類靈活性將贏得讀者的青睐。