首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 動態產生縮略圖完整實作教學

     編輯:ASP.NET 基礎

動態縮略圖產生核心邏輯

在 Web 應用程式中動態產生圖片縮略圖是常見需求。本文提供基於 System.Drawing 命名空間的完整實作方案,支援指定寬高輸出 JPEG 格式縮略圖,並包含完整的資源釋放機制。

必要前置準備

  1. 匯入 System.IO 命名空間處理檔案流
  2. 建立 CreateThumbnails 類別封裝核心邏輯
  3. 實作回呼函式 ImageAbortDummyCallback 控制縮圖產生流程

核心函式完整實作

Function CreateJPEGThumbnail(ByVal inSourceFile As String, _
                             ByVal inDestinationFile As String, _
                             ByVal ThumbWidth As Integer, _
                             ByVal ThumbHeight As Integer) As Boolean
    Dim imageFile As System.Drawing.Image
    Dim outputFstream As New FileStream(inSourceFile, FileMode.Open, FileAccess.Read)
    ' 建立檔案流支援同步與非同步讀寫操作
    
    Dim ImageAbortCallBack As System.Drawing.Image.GetThumbnailImageAbort
    ' 回呼方法:返回 true 表示提前終止 GetThumbnailImage 執行
    
    imageFile = System.Drawing.Image.FromStream(outputFstream)
    ImageAbortCallBack = New System.Drawing.Image.GetThumbnailImageAbort(AddressOf ImageAbortDummyCallback)
    
    ' 產生指定尺寸的縮略圖
    imageFile = imageFile.GetThumbnailImage(ThumbWidth, ThumbHeight, ImageAbortCallBack, IntPtr.Zero)
    ' IntPtr:平台特定類型,用於代表指標或控制代碼
    
    ' 以 JPEG 格式儲存
    imageFile.Save(inDestinationFile, System.Drawing.Imaging.ImageFormat.Jpeg)
    
    ' 完整資源釋放
    outputFstream.Close()
    outputFstream = Nothing
    imageFile = Nothing
    
    Return True
End Function

Function ImageAbortDummyCallback() As Boolean
    Return False
End Function

關鍵技術細節解析

元件說明
FileStream提供檔案周圍的 Stream 包裝,支援同步/非同步讀寫
GetThumbnailImageAbort委派類型,控制縮圖產生是否提前終止
IntPtr.Zero平台特定指標類型,此處傳遞零值表示不使用特定回呼資料
ImageFormat.Jpeg指定輸出格式為 JPEG,平衡品質與檔案大小

記憶體管理最佳實踐

程式碼展示了標準的資源釋放模式:

  • 明確呼叫 Close() 關閉檔案流
  • 將物件參考設為 Nothing 協助 GC 回收
  • 避免大型影像物件長期佔用記憶體

此實作適合整合至 ASP.NET Web Forms 或 MVC 專案中,可作為上傳圖片自動產生縮略圖的核心元件使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved