账号通
    

账号  

密码  

4415

查看

7

回复
主题:[原创]我自己写的 万能缩略图标签,图片尺寸任意缩,不变形,送给大家,希望V6也能加上这个标签 [收藏主题] 转到:  
lnwscn 当前离线

5

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:269 分
登录次数:4 次
注册时间:2009/6/26
最后登录:2010/1/29
lnwscn 发表于:2009/7/23 11:30:00   | 显示全部帖子 查看该作者主题 楼主 
科汛在线商城系统(NET)

适用版本 v5.5正式版,需要aspjpeg组件支持。


使用方便,在哪里调用,就实时生成一个缩略图,生成路径与原图相同,在文件名后面自动加尺寸如: _48x48


需要注意的是被缩略的图片尺寸要比缩略尺寸大,这次缩出来的图片才好看。


缩略的方法是先按比例缩,然后取中间的图像,保证图片尺寸完全符合要求。


另外建议关闭程序的缩略图功能。


调用方法,在自定义SQL标签里调一下标签


{$Thumbnails({$Field(PicUrl,Text,0,0,2,)},120,90)}
  '参说说明:参数1是为原图片地址,参数2是缩略图宽度,参数3是缩略图高度


 


 


代码如下:


修改KS_Cls\Kesion.Label.SQLCls.asp 这个文件


在大约350行左右 End Function 前一行加入 GetCirLabelContent=MyThumbnails(GetCirLabelContent)


 


然后在End Function 下面输入一下函数


函数中的网址是为了保证启用二级域名后图片依然能从www目录下读取,不需要的朋友可以把这个去掉


============这个是解析标签的函数


  '示例:{$Thumbnails({$Field(PicUrl,Text,0,0,2,)},120,90)}
  '参说说明:参数1是为原图片地址,参数2是缩略图宽度,参数3是缩略图高度
  Function MyThumbnails(lpFieldValue)
   On Error Resume Next
   Dim regEx, Matches, Match
   Dim FieldParam,FieldParamArr,mytempValue,mytempNum,mytarget,templpFieldValue,MakeResult,ThumbnailsPath,PicPathNoUrl,PicWidth,PicHeight
   Set regEx = New RegExp
   regEx.Pattern = "{\$Thumbnails\([^{\$}]*}"
   regEx.IgnoreCase = True
   regEx.Global = True
   Set Matches = regEx.Execute(lpFieldValue)  
   For Each Match In Matches
    FieldParam    = Replace(Replace(Match.Value,"{$Thumbnails(",""),")}","")
    FieldParamArr = Split(FieldParam,",")
    PicPathNoUrl = Replace(FieldParamArr(0),"http://www.kmhao.com","")
    PicWidth=FieldParamArr(1)
    PicHeight=FieldParamArr(2)
    mytempValue=split(PicPathNoUrl,".")
    ThumbnailsPath=mytempValue(0)&"_"&PicWidth&"x"&PicHeight&"."&mytempValue(1)
   lpFieldValue=Replace(lpFieldValue,Match.Value,"http://www.kmhao.com"&ThumbnailsPath)
   MakeResult=MakeThumbnails(PicPathNoUrl,PicWidth,PicHeight)
   Next
   MyThumbnails=lpFieldValue
  End Function


 


在最后一行end class后面 加


这个是缩略图的函数,


'===================================================
Function MakeThumbnails(PicUrl,PicWidth,PicHeight)
    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_MapPicPath
    s_MapPicPath = Server.MapPath(PicUrl)
    AspJpeg.Open s_MapPicPath '打开原图片
    If Err.Number <> 0 Then
        Err.Clear
        BuildSmallPic = "Error_02"
        Exit Function
    End If
 
 Dim strArr,PicToUrl,PicName,PicToPath
 strArr=Split(PicUrl,".")
 PicToUrl=strArr(0)&"_"&PicWidth&"x"&PicHeight&"."&strArr(1)
 strArr=Split(PicUrl,"/")
 PicName=strArr(Ubound(strArr))
 PicToPath=Replace(PicUrl,PicName,"")
 
    '按比例取得缩略图宽度和高度
    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 = PicWidth / PicHeight
    n1 = 0
    n2 = 0
    If n_OriginalWidth > PicWidth Then
        n1 = n_OriginalWidth / PicWidth
    Else
        n_BuildWidth = n_OriginalWidth
    End If
    If n_OriginalHeight > PicHeight Then
        n2 = n_OriginalHeight / PicHeight
    Else
        n_BuildHeight = n_OriginalHeight
    End If
 If div1=div2 Then
  n_BuildWidth = PicWidth
  n_BuildHeight = PicHeight
 End If
 If div1>div2 Then
  n_BuildWidth = n_OriginalWidth/(n_OriginalHeight/PicHeight)
  n_BuildHeight = PicHeight
 End If
 If div1<div2 Then
  n_BuildWidth = PicWidth
  n_BuildHeight = n_OriginalHeight/(n_OriginalWidth/PicWidth)
 End If
 
    '指定宽度和高度生成
    AspJpeg.Width = n_BuildWidth
    AspJpeg.Height = n_BuildHeight
 '缩略后裁剪
 Dim BCropX,BCropY
 BCropX=0
 BCropY=0
 If Int(n_BuildWidth) > Int(PicWidth) Then
  BCropX=Int((n_BuildWidth-PicWidth)/2)
 End If
 If Int(n_BuildHeight) > Int(PicHeight) Then
  BCropY=Int((n_BuildHeight-PicHeight)/2)
 End If
 AspJpeg.Crop BCropX, BCropY, PicWidth+BCropX, PicHeight+BCropY
 
 AspJpeg.Save Server.MapPath(PicToUrl)
 MakeThumbnails="OK"


 Set AspJpeg = Nothing
End Function

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
lnwscn 当前离线

5

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:269 分
登录次数:4 次
注册时间:2009/6/26
最后登录:2010/1/29
lnwscn 发表于:2009/7/23 14:21:00   | 显示全部帖子 查看该作者主题 沙发 
科汛在线网校系统
以下是引用一生有你在2009-7-23 11:38:00的发言:

这种方式是在调用生成,有缺点,每次用户访问都要去判断

 

而且只能用于sql 标签

如果生成静态页面的话,就只在生成是缩略图片,以后再访问就不会再生成了

 

这个思路版主可以参考,科汛的缩略图做的不好,很多用户都反映这个问题

希望科汛能作出更好的缩略图功能来。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.10938秒 powered by KesionCMS 9.0