黃鴻鋒,羅云芳
(廣西職業技術學院,廣西南寧,530226)
Windows平臺下的. Net Framework提供了GDI+(graphics device interface +)圖形類庫,該類庫采用面向對象的分層模塊化設計方法,給出一套簡潔、實用的圖形平臺實現方案。在System.Drawing命名空間中,包含了創建、編輯圖像的所有類[2],利用這些圖像操作的類, 可以對圖像進行處理。這里采用其中封裝的DrawImage()方法實現縮略圖的生成。
(1)Graphics.DrawImage()方法
Graphics類下的DrawImage()方法功能是在指定位置按指定大小繪制指定的Image。在實現上DrawImage()方法有很多重載,本文使用Graphics.DrawImage (Image, Int32, Int32,Int32, Int32)方法實現縮略圖的具體生成。此方法有5個參數,其中Image代表要繪制的圖像,第二個參數表示繪制圖像左上角的X坐標,第三個參數表示繪制圖像左上角的Y坐標。第四個參數表示繪制圖像的寬度,第五個參數表示繪制圖像的高度。
(2)Graphics.FromImage(Image)方法
Graphics類下的FromImage()方法功能是從指定的Image創建新的Graphics。其中參數Image表示創建新的Graphics的原始圖像。
(3)Graphics.FillRectangle()方法
Graphics類下的FillRectangle()方法功能是填充由一對坐標,一個寬度和一個高度指定的矩形的內部區域。此方法有5個參數,第一個參數表示畫刷的顏色(填充的背景色),第二個參數表示矩形左上角X坐標,第三個參數表示矩形左上角Y坐標,第四個參數表示要填充的矩形的寬度,第五個參數表示要填充的矩形有的高度。
(4)Graphics.Clear()方法
Graphics類下的Clear()方法功能是清除整個繪圖畫布,并使用指定的背景色填充畫布。
(1)不管原始圖像的大小,最終都要生成預先定義大小的縮略圖。
(2)如果原始圖像的寬度和高度比預先定義的大小都要小,如 16*16的圖像生成160*120的圖像,那么就相當于把16*16的圖像畫到160*120圖像的中間,圖像背景色為白色。
(3)如果原始圖像至少有一邊比預先定義好的大小要大,那么就先生成等比例縮放好的圖像,然后再畫到預先定義大小的圖像上,如:400*200的圖像生成160*120的圖像,則先生成等比例的160*80的圖像,然后再把該圖像畫到160*120圖像的中間。
使用Graphics.DrawImage()方法自動繪制生成規定大小等比例縮略圖的具體方法如下:
(1)把需要繪制縮略圖的原始圖像統一存放同一個目錄中,然后遍歷每一圖像作為繪制縮略圖的原始圖像。
(2)根據原始圖像生成一張位圖。
(3)利用創建的位圖創建Graphics對象graphics。
(4)設置Graphics對象的插值模式為高質量插值法。
(5)利用設置好的參數調用DrawImage()方法在指定的位置重新繪圖,生成規定大小等比例的縮略圖。
(6)創建一個存放縮略圖的目錄,存放生成好的縮略圖。
本文省去了實現的一些步驟和過程,只給出生成縮略圖核心功能方法的原代碼,具體如下:


通過此方法,可以對各種類型的圖像生成規定大小且等比例的縮略圖,具有生成縮略圖速度快的優點。在筆者開發的網上商城網站中用此方法對原始商品圖像生成相應的商品縮略圖,顯著提高了網站后臺管理人員的工作效率。是一種值借鑒使用的方法。
[1]白金牛,邢俊鳳,柳原.ASP. NET下圖像縮略圖自動生成與上傳方法.武漢理工大學學報,2009年2月.
[2]張玲,陳元春,孫勇.基于GDI+的通用圖形平臺設計.計算機工程,2005,31(12):218-220.
[3]蘇貴洋.ASP.NET網絡編程從基礎到實踐[M].北京:電子工業出版社,2005: 16-20.