程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> VB.NET版制作最清晰縮略圖的完整類

VB.NET版制作最清晰縮略圖的完整類

編輯:關於C#
 

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 String, ByVal CharValue As String) As String

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

Return MyStr(MyStr.Length - 1)

End Function

End Class

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved