黃鴻鋒,羅云芳
(廣西職業(yè)技術(shù)學(xué)院,廣西南寧,530226)
Windows平臺下的. Net Framework提供了GDI+(graphics device interface +)圖形類庫,該類庫采用面向?qū)ο蟮姆謱幽K化設(shè)計方法,給出一套簡潔、實用的圖形平臺實現(xiàn)方案。在System.Drawing命名空間中,包含了創(chuàng)建、編輯圖像的所有類[2],利用這些圖像操作的類, 可以對圖像進行處理。這里采用其中封裝的DrawImage()方法實現(xiàn)縮略圖的生成。
(1)Graphics.DrawImage()方法
Graphics類下的DrawImage()方法功能是在指定位置按指定大小繪制指定的Image。在實現(xiàn)上DrawImage()方法有很多重載,本文使用Graphics.DrawImage (Image, Int32, Int32,Int32, Int32)方法實現(xiàn)縮略圖的具體生成。此方法有5個參數(shù),其中Image代表要繪制的圖像,第二個參數(shù)表示繪制圖像左上角的X坐標(biāo),第三個參數(shù)表示繪制圖像左上角的Y坐標(biāo)。第四個參數(shù)表示繪制圖像的寬度,第五個參數(shù)表示繪制圖像的高度。
(2)Graphics.FromImage(Image)方法
Graphics類下的FromImage()方法功能是從指定的Image創(chuàng)建新的Graphics。其中參數(shù)Image表示創(chuàng)建新的Graphics的原始圖像。
(3)Graphics.FillRectangle()方法
Graphics類下的FillRectangle()方法功能是填充由一對坐標(biāo),一個寬度和一個高度指定的矩形的內(nèi)部區(qū)域。此方法有5個參數(shù),第一個參數(shù)表示畫刷的顏色(填充的背景色),第二個參數(shù)表示矩形左上角X坐標(biāo),第三個參數(shù)表示矩形左上角Y坐標(biāo),第四個參數(shù)表示要填充的矩形的寬度,第五個參數(shù)表示要填充的矩形有的高度。
(4)Graphics.Clear()方法
Graphics類下的Clear()方法功能是清除整個繪圖畫布,并使用指定的背景色填充畫布。
(1)不管原始圖像的大小,最終都要生成預(yù)先定義大小的縮略圖。
(2)如果原始圖像的寬度和高度比預(yù)先定義的大小都要小,如 16*16的圖像生成160*120的圖像,那么就相當(dāng)于把16*16的圖像畫到160*120圖像的中間,圖像背景色為白色。
(3)如果原始圖像至少有一邊比預(yù)先定義好的大小要大,那么就先生成等比例縮放好的圖像,然后再畫到預(yù)先定義大小的圖像上,如:400*200的圖像生成160*120的圖像,則先生成等比例的160*80的圖像,然后再把該圖像畫到160*120圖像的中間。
使用Graphics.DrawImage()方法自動繪制生成規(guī)定大小等比例縮略圖的具體方法如下:
(1)把需要繪制縮略圖的原始圖像統(tǒng)一存放同一個目錄中,然后遍歷每一圖像作為繪制縮略圖的原始圖像。
(2)根據(jù)原始圖像生成一張位圖。
(3)利用創(chuàng)建的位圖創(chuàng)建Graphics對象graphics。
(4)設(shè)置Graphics對象的插值模式為高質(zhì)量插值法。
(5)利用設(shè)置好的參數(shù)調(diào)用DrawImage()方法在指定的位置重新繪圖,生成規(guī)定大小等比例的縮略圖。
(6)創(chuàng)建一個存放縮略圖的目錄,存放生成好的縮略圖。
本文省去了實現(xiàn)的一些步驟和過程,只給出生成縮略圖核心功能方法的原代碼,具體如下:
通過此方法,可以對各種類型的圖像生成規(guī)定大小且等比例的縮略圖,具有生成縮略圖速度快的優(yōu)點。在筆者開發(fā)的網(wǎng)上商城網(wǎng)站中用此方法對原始商品圖像生成相應(yīng)的商品縮略圖,顯著提高了網(wǎng)站后臺管理人員的工作效率。是一種值借鑒使用的方法。
[1]白金牛,邢俊鳳,柳原.ASP. NET下圖像縮略圖自動生成與上傳方法.武漢理工大學(xué)學(xué)報,2009年2月.
[2]張玲,陳元春,孫勇.基于GDI+的通用圖形平臺設(shè)計.計算機工程,2005,31(12):218-220.
[3]蘇貴洋.ASP.NET網(wǎng)絡(luò)編程從基礎(chǔ)到實踐[M].北京:電子工業(yè)出版社,2005: 16-20.