登陆

很不错的缩略图AspJpeg代码

 轻松实现缩略图的一段代码刚处理到这部分就给贴上来了

asp/Visual Basic代码
  1. <%   
  2. Dim sOriginalPath   
  3. sOriginalPath = savepath   
  4. '原图片路径一般上传完毕后获取,或者从数据库获取   
  5.   
  6. Dim sReturnInfo, sSmallPath '函数返回信息, 缩略图路径   
  7. sReturnInfo = BuildSmallPic(sOriginalPath, "/uploadfiles/", 120, 120)   
  8.   
  9. 'Response.Write "返回信息:" & sReturnInfo & "<br/>"'   
  10. If InStr(sReturnInfo, "Error_") <= 0 Then  
  11.     sSmallPath = sReturnInfo '返回信息就是    
  12.     '将sSmallPath写入数据库   
  13.     '   
  14. Else  
  15.     Response.Write "详细错误:"    
  16.     Select Case sReturnInfo   
  17.     Case "Error_01"  
  18.         Response.Write "<font color='red'>创建aspjpeg组件失败,没有正确安装注册该组件</font>" & "<br/>"  
  19.     Case "Error_02"  
  20.         Response.Write "<font color='red'>原图片不存在,检查s_OriginalPath参数传入值</font>" & "<br/>"  
  21.     Case "Error_03"       
  22.         Response.Write "<font color='red'>缩略图存盘失败.可能原因:缩略图保存基地址不存在,检查s_OriginalPath参数传入值;对目录没有写权限;磁盘空间不足</font>" & "<br/>"  
  23.     Case "Error_Other"  
  24.         Response.Write "<font color='red'>未知错误</font>" & "<br/>"  
  25.     End Select  
  26.     Response.End  
  27. End If  
  28.   
  29. '================================================================   
  30. '原文件名:< % =sOriginalPath % >   
  31. '缩略图文件名:< % =sSmallPath % >   
  32. '原图片:<img src='< % =sOriginalPath % >' border=0><br/><br/>   
  33. '缩略图:<img src='< % =sSmallPath % >' border=0>   
  34. '================================================================   
  35. %>   
  36.   
  37. <%   
  38. '================================================================   
  39. 'Author:laifangsong QQ:25313644   
  40. '功能:按照指定图片生成缩略图   
  41. '注意:以下提到的“路径”都是值相对于调用本函数的文件的相对路径   
  42. '参数:   
  43. '    s_OriginalPath:        原图片路径 例:images/image1.gif   
  44. '    s_BuildBasePath:    生成图片的基路径,不论是否以“/”结尾均可 例:images或images/   
  45. '    n_MaxWidth:            生成图片最大宽度   
  46. '                        如果在前台显示的缩略图是 100*100,这里 n_MaxWidth=100,n_MaxHeight=100.   
  47. '    n_MaxHeight:        生成图片最大高度   
  48. '返回值:   
  49. '    返回生成后的缩略图的路径   
  50. '错误处理:   
  51. '    如果函数执行过程中出现错误,将返回错误代码,错误代码以 “Error”开头   
  52. '        Error_01:创建AspJpeg组件失败,没有正确安装注册该组件   
  53. '        Error_02:原图片不存在,检查s_OriginalPath参数传入值   
  54. '        Error_03:缩略图存盘失败.可能原因:缩略图保存基地址不存在,检查s_OriginalPath参数传入值;对目录没有写权限;磁盘空间不足   
  55. '        Error_Other:未知错误   
  56. '调用例子:   
  57. '    Dim sSmallPath '缩略图路径   
  58. '    sSmallPath = BuildSmallPic("images/image1.gif", "images", 100, 100)       
  59. '================================================================   
  60. Function BuildSmallPic(s_OriginalPath, s_BuildBasePath, n_MaxWidth, n_MaxHeight)   
  61.     Err.Clear   
  62.     On Error Resume Next  
  63.        
  64.     '检查组件是否已经注册   
  65.     Dim AspJpeg   
  66.     Set AspJpeg = Server.Createobject("Persits.Jpeg")   
  67.     If Err.Number <> 0 Then  
  68.         Err.Clear   
  69.         BuildSmallPic = "Error_01"  
  70.         Exit Function  
  71.     End If  
  72.   
  73.     '检查原图片是否存在   
  74.     Dim s_MapOriginalPath   
  75.     s_MapOriginalPath = Server.MapPath(s_OriginalPath)   
  76.     AspJpeg.Open s_MapOriginalPath '打开原图片   
  77.     If Err.Number <> 0 Then  
  78.         Err.Clear   
  79.         BuildSmallPic = "Error_02"  
  80.         Exit Function  
  81.     End If  
  82.   
  83.     '按比例取得缩略图宽度和高度   
  84.     Dim n_OriginalWidth, n_OriginalHeight '原图片宽度、高度   
  85.     Dim n_BuildWidth, n_BuildHeight '缩略图宽度、高度   
  86.     Dim div1, div2   
  87.     Dim n1, n2   
  88.     n_OriginalWidth = AspJpeg.Width   
  89.     n_OriginalHeight = AspJpeg.Height   
  90.     div1 = n_OriginalWidth / n_OriginalHeight   
  91.     div2 = n_OriginalHeight / n_OriginalWidth   
  92.     n1 = 0   
  93.     n2 = 0   
  94.     If n_OriginalWidth > n_MaxWidth Then  
  95.         n1 = n_OriginalWidth / n_MaxWidth   
  96.     Else  
  97.         n_BuildWidth = n_OriginalWidth   
  98.     End If  
  99.     If n_OriginalHeight > n_MaxHeight Then  
  100.         n2 = n_OriginalHeight / n_MaxHeight   
  101.     Else  
  102.         n_BuildHeight = n_OriginalHeight   
  103.     End If  
  104.     If n1 <> 0 Or n2 <> 0 Then  
  105.         If n1 > n2 Then  
  106.             n_BuildWidth = n_MaxWidth   
  107.             n_BuildHeight = n_MaxWidth * div2   
  108.         Else  
  109.             n_BuildWidth = n_MaxHeight * div1   
  110.             n_BuildHeight = n_MaxHeight   
  111.         End If  
  112.     End If  
  113.   
  114.     '指定宽度和高度生成   
  115.     AspJpeg.Width = n_BuildWidth   
  116.     AspJpeg.Height = n_BuildHeight   
  117.        
  118.     '--将缩略图存盘开始--   
  119.     Dim pos, s_OriginalFileName, s_OriginalFileExt '位置、原文件名、原文件扩展名   
  120.     pos = InStrRev(s_OriginalPath, "/") + 1   
  121.     s_OriginalFileName = Mid(s_OriginalPath, pos)   
  122.     pos = InStrRev(s_OriginalFileName, ".")   
  123.     s_OriginalFileExt = Mid(s_OriginalFileName, pos)   
  124.   
  125.     Dim s_MapBuildBasePath, s_MapBuildPath, s_BuildFileName '缩略图绝对路径、缩略图文件名   
  126.     Dim s_StartFlag '小图片文件名 .开始. 结尾标识 例: 如果大图片文件名是“image1.gif”,结尾标识是“_small”,那么小图片文件名就是“image1_small.gif”   
  127.     If Right(s_BuildBasePath, 1) <> "/" Then s_BuildBasePath = s_BuildBasePath & "/"  
  128.     s_MapBuildBasePath = Server.MapPath(s_BuildBasePath)   
  129.     s_StartFlag = "s_" '可以自定义,只要能区别大小图片即可   
  130.     s_BuildFileName = s_StartFlag & Replace(s_OriginalFileName, s_OriginalFileExt, "") & s_OriginalFileExt   
  131.     s_MapBuildPath = s_MapBuildBasePath & "\" & s_BuildFileName  
  132.       
  133.     AspJpeg.Save s_MapBuildPath '保存  
  134.     If Err.Number <> 0 Then  
  135.         Err.Clear  
  136.         BuildSmallPic = "Error_03"  
  137.         Exit Function  
  138.     End If  
  139.     '--将缩略图存盘结束--  
  140.  
  141.     '注销实例  
  142.     Set AspJpeg = Nothing  
  143.     If Err.Number <> 0 Then  
  144.         BuildSmallPic = "Error_Other"   
  145.         Err.Clear   
  146.     End If  
  147.     BuildSmallPic = s_BuildBasePath & s_BuildFileName   
  148. End Function  
  149.   
  150. %>  

Tags: aspjpeg, 缩略图, 代码, asp

« 上一篇 | 下一篇 »

相关文章

访客评论

JackFans
对象加了防盗技术
并不是类似迅雷快车那么随便转换即可就能下载的呀。-__-
抱歉帮不上忙
JackFans
你好,我也不知道该在哪里找到你的联系方式,就在这里留言了!
我想下载这里的 http://www.waimao168.com/luyin/资料,但是有些地址别转换了,不知道能否有一个类似快车,迅雷的那种地址转换呢?

我想可以实现,重要的是动网论坛的那种转换,我没有条件建立动网,所以只能求助于转换,否则我可以自己上传再下载!
Post by 阿辉 on 2008, March 29, 5:08 AM #2
JackFans
其实,生成缩略图似乎包含2个过程更合适一些,首先是等比例缩放图片--也就是上面代码实现的功能,然后还要裁切一下,我觉得这样的缩略图更有意义一些,因为经过2步处理之后,可以保证返回的图片尺寸是固定的(可以自由控制图片的尺寸),而如果只进行第一步,那就无法预知图片的尺寸(只能确定长或者宽了)。

比如:一幅 200x300的图片,如果只用上面的程序,那就会返回一个80x120 像素的图片,而要是经过2步操作,就可以随意限制大小,可以限制返回的是120x120.