在ASP.NET里轻松实现缩略图 
作者:孟宪会 
http://dotnet.aspx.cc/ShowDetail.aspx?id=45E7E33C-F149-450E-B5D5-832958C20538

解决方案 »

  1.   

    制作最清晰缩略图的完整类 
    --------------------------------------------------------------------------------
     作者: 不详  时间: 2004-2-5    阅读: 7 次  来源: 不详    
     
      
    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") & "." & ModWeb.GetRightByChar(vPicFile.PostedFile.FileName, ".")            Case PicType.Photo                vUpPicPath = "upload/images/Photo"                vSmallPicSize = 150                vNewPicName = System.Guid.NewGuid.ToString() & "." & ModWeb.GetRightByChar(vPicFile.PostedFile.FileName, ".")            Case PicType.Pic                vUpPicPath = "upload/images/Pic"                vSmallPicSize = 550                vNewPicName = System.Guid.NewGuid.ToString() & "." & ModWeb.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 EnumEnd Class