制作最清晰缩略图的完整类(VB.NET版)
2010-06-07 23:59
211 查看
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
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版)
- 制作最清晰缩略图的完整类(VB.NET版)
- 制作最清晰缩略图的完整类(VB.NET版)
- 制作最清晰缩略图的完整类(VB.NET版)
- [导入]制作最清晰缩略图的完整类(VB.NET版)
- 制作最清晰缩略图的完整类(VB.NET版)
- 完整的VB.NET的语法解析程序
- 制作推箱子游戏(VB.NET 2008)
- 求用ASP.NET(VB)编写收发EMAIL的完整代码
- 在VB.NET中实现多窗体同步的完整解决方案
- Asp.Net 上传图片并生成高清晰缩略图
- .Net 上传图片并生成高清晰缩略图
- Asp.Net 上传图片并生成高清晰缩略图
- 完美解决VB.NET窗体中预览DWG图形(附完整代码)
- Asp.Net 上传图片并生成高清晰缩略图
- [转]VB.net安装包制作全过程(不包含数据库)
- ASP.NET做SEO:制作架构清晰和更新及时的网站地图
- VB.NET中制作图片按钮
- 检查用户输入信息是否完整(vb.net实现)
- WindowsForm登陆窗体的制作(Vb.net+Access)