作最清晰缩略图的完整类    
以下是代码片段:
Public Class ClassUpPic  
   Private vPicFile As System.Web.UI.HtmlControls.HtmlInputFile  
    Private vSmallPicSize, vUpFileSize As Integer  
    Private vUpPicPath, vNewPicName, vTmpPicName As String  
    Private PicMin, PicMax, vPicMax As System.Drawing.Image  
    Private PicFormat As System.Drawing.Imaging.ImageFormat  
    Private MinHeight, MinWidth As Decimal  
    Private Myfile As IO.File  

    Public Sub New(ByVal PicFile As System.Web.UI.HtmlControls.HtmlInputFile, ByVal UpPicType As PicType)  
        vPicFile = PicFile  
        vUpFileSize = HttpContext.Current.Application("UpFileSize")  
        Select Case UpPicType  
            Case PicType.Face  
                vUpPicPath = "upload/images/Face"  
                vSmallPicSize = 150  
                vNewPicName = HttpContext.Current.Session("MemberID") & "." & GetRightByChar(vPicFile.PostedFile.FileName, ".")  
            Case PicType.Photo  
                vUpPicPath = "upload/images/Photo"  
                vSmallPicSize = 150  
                vNewPicName = System.Guid.NewGuid.ToString() & "." & GetRightByChar(vPicFile.PostedFile.FileName, ".")  
            Case PicType.Pic  
                vUpPicPath = "upload/images/Pic"  
                vSmallPicSize = 550  
                vNewPicName = System.Guid.NewGuid.ToString() & "." & GetRightByChar(vPicFile.PostedFile.FileName, ".")  
        End Select  
    End Sub  

    Public Function GetSavedFileName() As String  
        ’检验图片类型=================================================================  
        If vPicFile.PostedFile.FileName = "" Then  
            Throw New NotSupportedException("文件为空,请您选择上传的图片文件!")  
        End If  
        If Left(vPicFile.PostedFile.ContentType, 5) <> "image" Then  
            Throw New NotSupportedException("文件格式不合法,请选取有效的图片文件!" & vPicFile.PostedFile.ContentType)  
        End If  
        If vPicFile.PostedFile.ContentLength > vUpFileSize Then  
            Dim MaxNumber As Decimal = vUpFileSize / 1024 / 1024  
            Throw New NotSupportedException("上传的图片文件太大,最大支持" & Format(MaxNumber, "##,##0") & "M!")  
        End If  

        ’检验数量限制=================================================================  

        ’保存大文件=================================================================  
        vPicFile.PostedFile.SaveAs(HttpContext.Current.Server.MapPath(vUpPicPath & "/max/") & vNewPicName)  
        vPicFile.Dispose()  

        ’缩略图片文件=================================================================  
        PicMax = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath(vUpPicPath & "/max/") & vNewPicName)  
        If Not (PicMax.RawFormat Is PicFormat.Gif Or PicMax.RawFormat Is PicFormat.Png) Then  
            If PicMax.Height > vSmallPicSize Or PicMax.Width > vSmallPicSize Then  
                vTmpPicName = System.Guid.NewGuid.ToString() & ".png"  
                vPicMax = PicMax  
                PicMax.Save(HttpContext.Current.Server.MapPath(vUpPicPath & "/max/") & vTmpPicName, PicFormat.Png)  
                vPicMax.Dispose()  
                PicMax = System.Drawing.Image.FromFile(HttpContext.Current.Server.MapPath(vUpPicPath & "/max/") & vTmpPicName)  
            End If  
        End If  
        ’保存小文件=================================================================  
        GetMinPic(PicMax).Save(HttpContext.Current.Server.MapPath(vUpPicPath & "/min/") & vNewPicName, PicFormat.Jpeg)  
        PicMax.Dispose()  

        ’删除临时png文件=================================================================  
        If vTmpPicName <> "" Then Myfile.Delete(HttpContext.Current.Server.MapPath(vUpPicPath & "/max/") & vTmpPicName)  

        Return vNewPicName  
    End Function  

    Private Function GetMinPic(ByVal MaxPic As System.Drawing.Image) As System.Drawing.Image  
        If MaxPic.Height > vSmallPicSize Or MaxPic.Width > vSmallPicSize Then  
            If MaxPic.Height > MaxPic.Width Then  
                MinWidth = MaxPic.Width / (MaxPic.Height / vSmallPicSize)  
                MinHeight = vSmallPicSize  
            Else  
                MinWidth = vSmallPicSize  
                MinHeight = MaxPic.Height / (MaxPic.Width / vSmallPicSize)  
            End If  
            Return MaxPic.GetThumbnailImage(CInt(MinWidth), CInt(MinHeight), Nothing, New System.IntPtr())  
        Else  
            Return MaxPic  
        End If  
    End Function  

    Enum PicType  
        Face = 1  
        Photo = 2  
        Pic = 3  
    End Enum  

    Private Function GetRightByChar(ByVal StrValue As StringByVal CharValue As String) As String  
        Dim MyStr() As String = Split(StrValue, CharValue)  
        Return MyStr(MyStr.Length - 1)  
    End Function  
End Class

关联文档