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

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

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

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

% >
原文件名: < % = sOriginalPath% >< br />
缩略图文件名: < % = sSmallPath% >< br />
原图片: < img src = ' <%=sOriginalPath%>' border=0><br/><br/>
缩略图: < img src = ' <%=sSmallPath%>' border=0>


< %
' ================================================================
' 功能:按照指定图片生成缩略图
' 注意:以下提到的“路径”都是值相对于调用本函数的文件的相对路径
' 参数:
'     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

% >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值