Username: Password:

用aspjpeg组件,按宽高比例,真正生成缩略图 _asp技巧
来源:网页教学网作者:未知 发布时间:2007-12-11 06:30:48

在网站前台产品展示时,一般用缩略图,点击进入然后看到大图。
缩略图带来了两个烦劳:
1.假如后台只传一张大图,显示缩略图时只是将大图固定宽度和高度,这样不但造成缩略图变形,而且使得页面访问速度缓慢。
2.假如后台每次上传时,都上传两张图片,一张大图,一张缩略图。这样的话,没有1中的问题,但是给后台人员造成很大麻烦。因为后台人员并不一定知道处理生成缩略图;即使知道并能快速处理,也浪费掉一些时间。

下面的代码能够帮您用AspJpeg组件,按宽高比例,真正生成缩略图
AspJpeg组件下载:http://www.aspjpeg.com/download.html
AspJpeg组件使用:http://www.mydw.cn/tech/1/766.html
注册码:48958-77556-02411

 

<%
Dim sOriginalPath
sOriginalPath = "images/1.gif"
原图片路径一般上传完毕后获取,或从数据库获取

Dim sReturnInfo, sSmallPath 函数返回信息, 缩略图路径
sReturnInfo = BuildSmallPic(sOriginalPath, "images", 100, 100)

Response.Write "返回信息:" & sReturnInfo & "
"
If InStr(sReturnInfo, "Error_") <= 0 Then
    sSmallPath = sReturnInfo 返回信息就是
    将sSmallPath写入数据库
   
Else
    Response.Write "周详错误:"
    Select Case sReturnInfo
    Case "Error_01"
        Response.Write "创建AspJpeg组件失败,没有正确安装注册该组件" & "
"
    Case "Error_02"
        Response.Write "原图片不存在,检查s_OriginalPath参数传入值" & "
"
    Case "Error_03"   
        Response.Write "缩略图存盘失败.可能原因:缩略图保存基地址不存在,检查s_OriginalPath参数传入值;对目录没有写权限;磁盘空间不足" & "
"
    Case "Error_Other"
        Response.Write "未知错误" & "
"
    End Select
    Response.End
End If

%>
原文档名:<%=sOriginalPath%>

缩略图文档名:<%=sSmallPath%>

原图片: border=0>


缩略图: border=0>


<%
================================================================
Author:laifangsong QQ:25313644
功能:按照指定图片生成缩略图
注意:以下提到的“路径”都是值相对于调用本函数的文档的相对路径
参数:
    s_OriginalPath:        原图片路径 例:images/image1.gif
    s_BuildBasePath:    生成图片的基路径,不论是否以“/”结尾均可 例:images或images/
    n_MaxWidth:            生成图片最大宽度
                        假如在前台显示的缩略图是 100*100,这里 n_MaxWidth=100,n_MaxHeight=100.
    n_MaxHeight:        生成图片最大高度
返回值:
    返回生成后的缩略图的路径
错误处理:
    假如函数执行过程中出现错误,将返回错误代码,错误代码以 “Error”开头
        Error_01:创建AspJpeg组件失败,没有正确安装注册该组件
        Error_02:原图片不存在,检查s_OriginalPath参数传入值
        Error_03:缩略图存盘失败.可能原因:缩略图保存基地址不存在,检查s_OriginalPath参数传入值;对目录没有写权限;磁盘空间不足
        Error_Other:未知错误
调用例子:
    Dim sSmallPath 缩略图路径
    sSmallPath = BuildSmallPic("images/image1.gif", "images", 100, 100)   
================================================================
Function BuildSmallPic(s_OriginalPath, s_BuildBasePath, n_MaxWidth, n_MaxHeight)
    Err.Clear
    On Error Resume Next
   
    检查组件是否已注册
    Dim AspJpeg
    Set AspJpeg = Server.Createobject("Persits.Jpeg")
    If Err.Number <> 0 Then
        Err.Clear
        BuildSmallPic = "Error_01"
        Exit Function
    End If

    检查原图片是否存在
    Dim s_MapOriginalPath
    s_MapOriginalPath = Server.MapPath(s_OriginalPath)
    AspJpeg.Open s_MapOriginalPath 打开原图片
    If Err.Number <> 0 Then
        Err.Clear
        BuildSmallPic = "Error_02"
        Exit Function
    End If

    按比例取得缩略图宽度和高度
    Dim n_OriginalWidth, n_OriginalHeight 原图片宽度、高度
    Dim n_BuildWidth, n_BuildHeight 缩略图宽度、高度
    Dim div1, div2
    Dim n1, n2
    n_OriginalWidth = AspJpeg.Width
    n_OriginalHeight = AspJpeg.Height
    div1 = n_OriginalWidth / n_OriginalHeight
    div2 = n_OriginalHeight / n_OriginalWidth
    n1 = 0
    n2 = 0
    If n_OriginalWidth > n_MaxWidth Then
        n1 = n_OriginalWidth / n_MaxWidth
    Else
        n_BuildWidth = n_OriginalWidth
    End If
    If n_OriginalHeight > n_MaxHeight Then
        n2 = n_OriginalHeight / n_MaxHeight
    Else
        n_BuildHeight = n_OriginalHeight
    End If
    If n1 <> 0 Or n2 <> 0 Then
        If n1 > n2 Then
            n_BuildWidth = n_MaxWidth
            n_BuildHeight = n_MaxWidth * div2
        Else
            n_BuildWidth = n_MaxHeight * div1
            n_BuildHeight = n_MaxHeight
        End If
    End If

    指定宽度和高度生成
    AspJpeg.Width = n_BuildWidth
    AspJpeg.Height = n_BuildHeight
   
    --将缩略图存盘开始--
    Dim pos, s_OriginalFileName, s_OriginalFileExt 位置、原文档名、原文档扩展名
    pos = InStrRev(s_OriginalPath, "/") + 1
    s_OriginalFileName = Mid(s_OriginalPath, pos)
    pos = InStrRev(s_OriginalFileName, ".")
    s_OriginalFileExt = Mid(s_OriginalFileName, pos)

    Dim s_MapBuildBasePath, s_MapBuildPath, s_BuildFileName 缩略图绝对路径、缩略图文档名
    Dim s_EndFlag 小图片文档名结尾标识 例: 假如大图片文档名是“image1.gif”,结尾标识是“_small”,那么小图片文档名就是“image1_small.gif”
    If Right(s_BuildBasePath, 1) <> "/" Then s_BuildBasePath = s_BuildBasePath & "/"
    s_MapBuildBasePath = Server.MapPath(s_BuildBasePath)
    s_EndFlag = "_small" 能够自定义,只要能区分大小图片即可
    s_BuildFileName = Replace(s_OriginalFileName, s_OriginalFileExt, "") & s_EndFlag & s_OriginalFileExt
    s_MapBuildPath = s_MapBuildBasePath & "\" & s_BuildFileName
   
    AspJpeg.Save s_MapBuildPath 保存
    If Err.Number <> 0 Then
        Err.Clear
        BuildSmallPic = "Error_03"
        Exit Function
    End If
    --将缩略图存盘结束--

    注销实例
    Set AspJpeg = Nothing
    If Err.Number <> 0 Then
        BuildSmallPic = "Error_Other"
        Err.Clear
    End If
    BuildSmallPic = s_BuildBasePath & s_BuildFileName
End Function

%>

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅