ξσ Dicky's Blog σξ

朋友多了,寂寞卻沒少,朋友沒有了你,得到了天下最高的技術又能如何?人類的全部才能無非是時間和耐心的混合物.---巴尔扎克

Traditional Chinese

导航

制作最清晰缩略图的完整类(VB.NET版)

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), NothingNew 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 StringAs String

        
Dim MyStr() As String = Split(StrValue, CharValue)

        
Return MyStr(MyStr.Length - 1)

    
End Function


End Class

转自:http://guoblog.com/blogview.asp?logID=259

posted on 2005-01-22 09:25  ξσ Dicky σξ  阅读(827)  评论(0编辑  收藏  举报