基于ASPNET的快速圖像資源庫的設計_第1頁
基于ASPNET的快速圖像資源庫的設計_第2頁
基于ASPNET的快速圖像資源庫的設計_第3頁
基于ASPNET的快速圖像資源庫的設計_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于ASP.NET的快速圖像資源庫的設計黃良斌(南通紡織職業技術學院 信息系,南通 )摘 要:本文講述了利用ASP.NET的IO文件功能來快速實現圖像資源庫的方法,該方法以Windows的文件系統為基礎,用程序來動態生成網站,當資源文件主要以JPG等網絡通用圖像時,可以快速生成資源庫網站,并通過調用Graphics類的DrawImage()方法,選擇合適的參數對已有圖像進行重新繪制,生成相應的縮略圖,以提高系統的響應時間。關鍵詞:ASP.NET、圖像、資源庫、縮略圖0 引言圖1 圖像資源庫的流程圖隨著Internet的高速發展,網絡已經改變了我們的工作與生活。原先設計師人員會以手中擁有大量的設

2、計資源為驕傲,而現在絕大部分資源一般都能通過網絡搜索方式得到。但針對圖像類的資源,每次都要從網上搜索很長一段時間才能找到一個合適的圖片。如何把自己長期積累定制后的資源做成網站資源庫,簡單快速的又不要懂高深編程技術就可以在方便自己工作的同時與他人共享?本文利用ASP.NET的動態網頁制作語言功能,編寫幾個簡單的程序文件,利用ASP.NET的IO文件功能來實現快速制作網站圖像資源庫,以達到與朋友分享資源僅僅只需要一個COPY命令。并不用自己花很長的時間來制作與維護網站。1 主要思路ASP.NET是目前最流行Web應用程序開發技術。它可以使眾多的服務器控件和.NET 框架提供的數千個.NET類,在服

3、務器上生成功能強大的Web應用程序,而且可以輕松實現以前必須借助第三方組件才能實現的縮略圖(縮略圖是指把原圖像按比例縮小)。1利用Web方式來實現諸如看圖軟件ACDSee的基本功能,先提供給用戶縮略圖,作為原圖的預覽,當訪問者點擊縮略圖時,彈出新窗口顯示原圖,以便讓訪問者清晰查看到圖片。通過縮略圖的方式,使圖片的尺寸減小,使大量圖片的頁面在瀏覽器中打開的速度加快。圖2 菜單導航示例圖程序首先自動掃描網站根目錄,并自動生成目錄導航,用戶選擇了相應的文件夾后,自動掃描該目錄,并根據目錄中的內容生成次層目錄及圖片縮略圖。要實現這樣的功能,有兩個要解決的技術,一是如何將圖片顯示為縮略圖,二是如何動態顯

4、示縮略圖的個數,使得它與支持格式的圖片的數量相等,并根據圖片數量進行分頁顯示。為了加快圖片的顯示速度,提高系統的性能,生成縮略圖的過程由用戶自己在首次瀏覽圖片過程中由服務器自動生成,為了以減少用戶的等待時間,把這個過程放在分頁的過程之中,每次只生成當前顯示頁的縮略圖,其流程圖如圖1所示。2 目錄導航模塊設計當用戶訪問網站時,首先掃描網站根目錄,根據目錄結構生成目錄菜單供用戶選擇。為保存用戶過程中的路徑狀態,把初始目錄變量保存在Web.Config文件之中,為系統提供一個全局變量。 為了方便用戶點擊的路徑目錄狀態變量在各面頁之間進行傳遞,系統采用較為常見的QueryString傳值方法2,它使用

5、最為方便,可以簡單地通過URL后帶參數的方式來傳遞變量。其網站管理導航分為兩個部分,如圖2所示,一部分是目錄菜單,另一部分是目錄結構,其基本形成均采用Table控件來控制內容,目錄結構為使用者提供了很好的目錄層次。圖3 分頁顯示縮略圖Web運行效果3 分頁顯示縮略圖模塊設計本例采用53的表格來顯示當前目錄圖片,ASP.NET的表格控件能夠方便靈活地顯示3。先顯示縮略圖,點擊后顯示原圖,每15個圖片自動分頁。每次打開分頁均從目錄的第一個文件開始向后遍歷,利用CurrentPagePageSize來控制顯示當前要顯示的圖片。如果每頁需要顯示多一點的圖片,則只要修改PageSize即可完成控制。如圖

6、3所示,當點擊縮略圖時,系統會打開一個新的窗口顯示原圖,并掃描所在目錄的所有文件,根據其文件在目錄的排列序號來自動生成上一個圖與下一個圖的鏈接。其點擊縮略圖后顯示原圖并提供上一個圖與下一個圖的部分源代碼如下所示: protected void Page_Load(object sender, EventArgs e) curid = int.Parse(Request.QueryStringid);/獲取當前用戶的圖片ID cur_path = ConfigurationManager.AppSettingscurpath;/獲取當前用戶工作路徑 DirectoryInfo imagesfil

7、e = new DirectoryInfo(this.MapPath(.) + cur_path); /取得圖片目錄信息 FileInfo fi = imagesfile.GetFiles(*.*);/取得圖片目錄所有文件集合 for (int i = 0; i fi.Length; i+) /每次都遍列所有文件 string sArray = fii.Name.Split(.); /分割文件名,僅取文件名 if (sArray0.IndexOf(_small, 0, sArray0.Length) = 0 &sArray1.ToLower() = jpg) BigPicCount+; /大圖

8、數目累加 if (BigPicCount = curid)/只取當前頁的文件顯示 Table1.Rows0.Cells0.Text = BigPicCount) /判斷是下一個圖按鈕是否可用 lbnNextPage.Enabled = false; else lbnNextPage.Enabled = true; lbnNextPage.PostBackUrl = listphoto.aspx?id= + (curid+1); if (curid 1) /判斷是上一個圖按鈕是否可用 lbnPrevPage.Enabled = false; else lbnPrevPage.Enabled =

9、true; lbnPrevPage.PostBackUrl = listphoto.aspx?id= + (curid-1); 4 縮略圖模塊設計根據文件的后綴名來判斷文件的屬性,對于JPG圖像文件來說,只需要將圖的寬與高比例縮小,然后調用Graphics類的DrawImage()方法,選擇合適的參數對已有圖像進行重新繪制4。但對于視頻文件,如AVI、MPG、MOV等,其在網頁中不能直接顯示其內容,需要對其進行截圖,并保存為JPG縮略圖文件,以供用戶預覽。本例中,圖像的縮略圖生ASP.NET本身的功能來完成,因視頻的格式較為復雜,故采用FFMPEG外部程序來完成截圖5,這樣將大為簡化程序。其中

10、兩個部分核心代碼如下所示。/根據原圖生成縮略圖public void MakeThumb(string originalImagePath,string thumbnailPath,int width,int height) Image originalImage = Image.FromFile(originalImagePath); int towidth =width;/縮略圖的寬 int toheight =height; /縮略圖的高 int ow =originalImage.Width; /原圖的寬 int oh =originalImage.Height; /原圖的高 Imag

11、e bitmap = newDrawing.Bitmap(towidth, toheight); /新建一個bmp圖片 Graphics g =Drawing.Graphics.FromImage(bitmap); /新建一個畫板g.InterpolationMode =Drawing.Drawing2D.InterpolationMode.High; /設置高質量插值法 g.SmoothingMode =Drawing.Drawing2D.SmoothingMode.HighQuality; /設置高質量,低速度的平滑程度 g.Clear(Color.Transparent); /清空畫布并

12、以透明背景色填充/在指定位置并且按指定大小繪制原圖片的指定部分 g.DrawImage(originalImage, new Rectangle(0, 0,towidth,toheight), new Rectangle(0,0,ow,oh), GraphicsUnit.Pixel); bitmap.Save(thumbnailPath,System.Drawing.Imaging.ImageFormat.Jpeg); /以jpg格式保存縮略圖/根據視頻文件,利用ffmpeg工具來產生截圖,并保存至JPG的縮略圖public void MakeAVThumb(string vFileName,

13、string flv_img,string FlvImgSize) string ffmpeg = this.MapPath(.)+ffmpeg.exe;Diagnostics.ProcessStartInfo startInfo=new Diagnostics.ProcessStartInfo(ffmpeg); /取得ffmpeg.exe的路徑,在根目錄startInfo.WindowStyle =Diagnostics.ProcessWindowStyle.Hidden;/用ffmpeg.exe文件需要的參數即可,此處命令在ffmpeg 0.4.9調試通過startInfo.Argumen

14、ts= -i +vFileName+ -y -f image2 -t 0.001 -s +FlvImgSize+ +flv_img;Diagnostics.Process.Start(startInfo); /開始截圖并保存5 總結利用這種方法只需要把做好的ASP.NET程序拷貝至網站目錄,并把目錄設置成Web共享,則一個圖像資源庫網站迅速建立,用戶不用修改任何源代碼。本文中采用的一邊瀏覽一邊產生縮略圖的方法大大提高了系統性能,用戶在不知不覺中為網站建立了縮略圖,加快后面用戶的響應時間,簡化了系統維護,特別針對于視頻文件,采用FFMPEG工具,方便快速的產生預覽圖,利用FFMPEG的強大的視頻

15、兼容功能,方便產生其他常用視頻格式縮略圖,為系統的擴展提供一個良好的基礎。參考文獻1 朱滿鳳.利用縮略圖技術實現產品展示網站的快速訪問.電腦學習J,2007(05):23252 鐘世芬,柳榮其,孫彪,周榮輝.ASP.NET中參數傳值的綜合使用.計算機應用研究J,2004(11):2122143 岳國偉,梁永全,陳玉娥.ASP.NET中數據分頁技術的研究.計算機應用研究J,2007(09):1591614 白金牛,邢俊鳳,柳原.ASP.NET下圖像縮略圖自動生成與上傳方法.武漢理工大學學報J,2009(01):16185 任嚴,韓臻,劉麗.基于FFMPEG的視頻轉換與發布系統.計算機工程與設計J

16、,2007(20):49624963RESOURCE LIBRARY OF IMAGES BASED ON ASP.NETHUANG Liang-Bin(1.Nantong Textile Vocational and Technical College,Nantong ,China)Abstract This paper describes a method for quickly resources library of images, this method is using procedures to dynamically generated website based on Windows File System, it can quickly generate resources website when the main resource file is Network General Images, such as JPG and so on. It selects the appropriate parameters to re- drawn thumbnails by calling the method of Graphics class, such as DrawImage(). It can impr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論