运用了VB.NET开发很长时间了,总结了一点经验,我发现有些人为缩略图问题烦恼,在这里呢我来用VB.NET实现缩略图代码解决这个问题。
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), 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
以上就是VB.NET实现缩略图的代码,试试吧!
【编辑推荐】