如何制作最清晰的缩略图??求關鍵代碼

bushido 2004-04-30 11:44:19
rt
...全文
92 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
stoway 2004-04-30
  • 打赏
  • 举报
回复
在ASP.NET里轻松实现缩略图
作者:孟宪会
http://dotnet.aspx.cc/ShowDetail.aspx?id=45E7E33C-F149-450E-B5D5-832958C20538
xubinhui 2004-04-30
  • 打赏
  • 举报
回复
制作最清晰缩略图的完整类
--------------------------------------------------------------------------------
作者: 不详 时间: 2004-2-5 阅读: 7 次 来源: 不详


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") & "." & ModWeb.GetRightByChar(vPicFile.PostedFile.FileName, ".")

Case PicType.Photo

vUpPicPath = "upload/images/Photo"

vSmallPicSize = 150

vNewPicName = System.Guid.NewGuid.ToString() & "." & ModWeb.GetRightByChar(vPicFile.PostedFile.FileName, ".")

Case PicType.Pic

vUpPicPath = "upload/images/Pic"

vSmallPicSize = 550

vNewPicName = System.Guid.NewGuid.ToString() & "." & ModWeb.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

End Class

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧