扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
先收集一些相关资源
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
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者