制作最清晰缩略图的完整类

原创 2004年09月28日 19:24:00

Public Class ClassUpPic<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    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版)

先收集一些相关资源Public Class ClassUpPic    Private vPicFile As System.Web.UI.HtmlControls.HtmlInputFile    ...
  • donetk
  • donetk
  • 2008年05月03日 17:24
  • 363

制作最清晰缩略图的完整类(VB.NET版)

先收集一些相关资源Public Class ClassUpPic    Private vPicFile As System.Web.UI.HtmlControls.HtmlInputFile    ...
  • AppleBBS
  • AppleBBS
  • 2005年01月22日 01:25
  • 1672

生成小而清晰的缩略图

生成缩略图, 特别是头像, 为了适合网页浏览,要小而清晰, 可以设为100*100pixel, 保存为jpg时,质量用80, 效果就很好了, 没有锯齿, 而且图像大小可小到3kb左右, 如果用70*7...
  • wuzuyu365
  • wuzuyu365
  • 2016年11月01日 10:40
  • 398

解决V9图片质量,缩略图模糊问题

打开phpcms/libs/classes/image.class.php 注释掉以下代码 else imagecopyresized($thumbimg, $srcimg, 0, 0, $...
  • abnereel
  • abnereel
  • 2014年12月03日 17:18
  • 2799

PHPCMS V9缩略图模糊解决方法

文件路径:phpcms/libs/classes/image.class.php 114-115line 注释: else   imagecopyresized($thumbimg, $srcim...
  • u014374868
  • u014374868
  • 2015年10月27日 01:14
  • 1083

PHP创建缩略图造成图片质量低下的完美解决方法

近期弄个论坛,在首页要有个排名,显示评论最多的前十位用户的列表,列表有个略图是用户最新上传的作品,如果使用原来的图,图片过大,首页加载过慢,因此要使用略图 以上来使用imagecopyresized...
  • qiandublog
  • qiandublog
  • 2016年12月02日 14:45
  • 1509

用AspJpeg组件,按宽高比例,真正生成缩略图

在网站前台产品展示时,一般用缩略图,点击进入然后看到大图。缩略图带来了两个烦劳:1.如果后台只传一张大图,显示缩略图时只是将大图固定宽度和高度,这样不但造成缩略图变形,而且使得页面访问速度缓慢。2.如...
  • JOHNCOOLS
  • JOHNCOOLS
  • 2006年11月02日 15:52
  • 931

PS让图片清晰的几种操作

一、去杂色、躁点 一般用数码相机拍照都会有比较多的躁点,手机拍的就更为明显,特别是在光线不好的时候。所以第一步要去掉这些躁点、杂色。 方法:在 photoshop 里选择滤镜-杂色-减少杂...
  • libenchu347
  • libenchu347
  • 2015年07月18日 20:13
  • 370

彻底解决 ECSHOP缩略图 ECSHOP商品图片 不清晰的方法,最新解决办法

ECSHOP程序默认生成JPG格式缩略图质量不太好,通常比较模糊,尤其是再添加水印的话,感觉图像显示效果更差。 这跟图片处理函数有关,默认生成JPG图片质量是75(也有说60,65),我们可通过改变...
  • xiyanwushi
  • xiyanwushi
  • 2016年06月10日 10:33
  • 982

Yii图片上传生成缩略图

为Yii Framework而写 将CThumb.php文件protected/extensions/CThumb下 将   'components'=>array(   'thumb'=>a...
  • renzhenhuai
  • renzhenhuai
  • 2014年06月27日 15:02
  • 4477
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:制作最清晰缩略图的完整类
举报原因:
原因补充:

(最多只允许输入30个字)