<code id="iq5ws"></code>
      <thead id="iq5ws"><option id="iq5ws"></option></thead>

      1. <th id="iq5ws"><sup id="iq5ws"></sup></th>
        <strike id="iq5ws"><video id="iq5ws"></video></strike>

          <pre id="iq5ws"></pre>

          K9 通用版 博客版 主題版 地方門戶版 企業版 |   企業(ASP) 分類 使用 分享 疑問 模板 建議 幫助 錯誤 其他
          +新建主題 [Ajax]
          填寫帳號密碼即可完成注冊
          +新建話題 最新回復排序 最新主題排序 精華帖子

          KingCMS5.1 上傳圖片與遠程圖片添加水印功能

          1Next >

          hkdeng 發表于:15-06-10 22:16 [添加收藏] 樓主 [回復] #Top#
          hkdeng 人氣:13 積分:19 金幣:444
          用了一段時間的kingcms,還有顧及到圖片水印,現在注意到這里了,有些地方要完善一下,默認情況下kingcms支持遠程抓圖時水印,但是上傳圖片時卻沒有,下面代碼可以實現上傳時給圖片加水印。


          前臺/system/config.asp文件 這段代碼可以設置是否支持水印,前提是你的空間支持aspjpeg         www.hkdeng.com


          'aspjpeg (true 支持;false不支持)
          const king_isjpeg = true '服務器是否支持aspjpeg,Version 1.5
          const king_regkey = "" '有些服務器有ASPJPEG組件,但不能使用時,就在這里輸入可用的系列號就能正常使用
          const king_watermark = true '是否打開水印功能 水印文件在 template/image/watermark.gif
          const king_watermark_weight = 4 ' 水印的位置 0隨機 1左上角 2右上角 3左下角 4右下角 5正中間
          const king_watermark_alpha = 0.8 '水印的透明度


          后臺/Article/index.asp文件 sub king_edt()函數


          if cstr(form("snapimg"))="1" then data(1,0)=king.snap(data(1,0)) '遠程抓圖


          if len(artimg)>0 then
              if cstr(form("snapimg"))="1" or validate(artimg,5)=false then
               data(12,0)=artimg'如果已經被抓過圖,則直接設置路徑
              else'如果沒有被抓過圖,需要抓圖;但考慮到覆蓋源圖,還是重命名一個圖片
               data(12,0)=king.inst&king_upath&"/image/"&art.path&"/"&formatdate(date(),2)&"/"&int(timer()*100)&"."&king.extension(artimg)
               king.createfolder data(12,0)
               king.remote2local artimg,data(12,0)
              end if
             end if
            else
             if validate(data(12,0),7) and validate(data(12,0),5) then'如果是圖片路徑
              artimg=data(12,0)
              data(12,0)=king.inst&king_upath&"/image/"&art.path&"/"&formatdate(date(),2)&"/"&int(timer()*100)&"."&king.extension(data(12,0))
              king.createfolder data(12,0)
              king.remote2local artimg,data(12,0)
             end if
            end if


          前臺/system/fun.asp文件
          public function snap(l1)
           dim objregexp,match,matches,arrimg,allimg,newimg,retstr
           dim i,fimagename,fname,filename,fext,k,arrnew,arrall,today,uppathfd
           set objregexp=new regexp
           objregexp.ignorecase=true
           objregexp.global=true
           objregexp.pattern="(<img([^>]*))( src=)([""'])(.*?)4(([^>]*)/?>)"
           set matches=objregexp.execute(l1)
            for each match in matches
             retstr=retstr&llllII(match.value)
            next
            arrimg=split(retstr,"||")
            allimg="":newimg=""
            today=formatdate(tnow,2)
            uppathfd="../../"&king_upath&"/image/"&path&"/"&today
            createfolder uppathfd'創建文件夾
            fname=timer()*100'定義一個隨機圖片文件名(無擴展名)
            for i=1 to ubound(arrimg)
             if arrimg(i)<>"" and instr(allimg,arrimg(i))<1 then
              filename=fname&i'文件名(無擴展名)
              fext=mid(arrimg(i),instrrev(arrimg(i),"."))
              fimagename=filename&fext'獲得擴展名,加上一個i循環?這樣容易產生重復文件.
              '判斷是否存在同名的文件,如果沒有就直接通過,如果有,就重命名
              while (isexist(uppathfd&"/"&fimagename))
               fimagename=filename&"_"&k&fext
               k=k+1
              wend
              remote2local arrimg(i),uppathfd&"/"&fimagename
              allimg=allimg&"||"&arrimg(i)
              newimg=newimg&"||"&inst&king_upath&"/image/"&path&"/"&today&"/"&fimagename
             end if
            next
            arrnew=split(newimg,"||")
            arrall=split(allimg,"||")
            for i=1 to ubound(arrnew)
             l1=replace(l1,arrall(i),arrnew(i))
            next
            snap=l1
           set matches=nothing
           set objregexp=nothing
          end function


          'remote2local  
          public sub remote2local(l1,l2)
           on error resume next
           dim I1,I2,I3:I1=trim(l1):I3=gethtm(I1,1)
           set I2=server.createobject(king_stm)
            I2.type=1
            I2.open
            I2.write I3
            I2.savetofile server.mappath(l2),2
            I2.close()
           set I2=nothing
           watermark l2
          end sub


          'watermark  
          public sub watermark(l1)
           on error resume next
           dim I1,I2,I3
           if king_watermark and isobj(king_jpeg) and isexist(l1) then
           else
            exit sub
           end if
           set I1=server.createobject(king_jpeg)'原始圖
           if len(king_regkey)>0 then I1.regkey =king_regkey
           I1.open server.mappath(l1)
           set I2=server.createobject(king_jpeg)'水印圖片
           if len(king_regkey)>0 then I2.regkey =king_regkey
           I2.open server.mappath("../../"&king_templates&"/images/watermark.gif")
           if king_watermark_weight=0 then
            randomize
            I3=(round((rnd*99)+1) mod 5)+1
           else
            I3=king_watermark_weight
           end if
           '水印
           if I1.width>I2.width and I1.height>I2.height then
            select case cstr(I3)
            case"1" I1.DrawImage 0, 0,I2,king_watermark_alpha,&HFFFFFF
            case"2" I1.DrawImage I1.width-I2.width, 0,I2,king_watermark_alpha,&HFFFFFF
            case"3" I1.DrawImage 0, I1.height-I2.height,I2,king_watermark_alpha,&HFFFFFF
            case"4" I1.DrawImage I1.width-I2.width, I1.height-I2.height,I2,king_watermark_alpha,&HFFFFFF
            case"5" I1.DrawImage (I1.width-I2.width)/2, (I1.height-I2.height)/2,I2,king_watermark_alpha,&HFFFFFF
            end select
            I1.save server.mappath(l1)
           end if
           set I1=nothing
           set I2=nothing
          end sub


          以上是kingcms5.1實現水印的函數調用主要代碼


          下面實現如何手工上傳圖片時也實現水印


          后臺/system/manage.asp文件 sub king_filemanage()函數


          添加以下紅色部分代碼就行了
          case"upfile"
            king.clearol
            king.ol="<meta http-equiv=""Content-Type"" content=""text/html; charset=utf-8"" />"
            king.ol="<style type=""text/css"">*{margin:0px;padding:0px;}</style>"
            if instr(lcase(request.servervariables("content_type")),"multipart/form-data") then
             upload.FileType=ftype
             upload.SavePath=""
             if right(path,1)<>"/" then path=path&"/"
             if upload.save("upfile",path&upload.form("upfile_name")) then'成功上傳
              filecate= upload.form("upfile_name")
              filecate=king.filecate(LCase(right(filecate,(len(filecate)-instrrev(filecate,".")))))
              if filecate="img" then
               king.watermark(path&upload.form("upfile_name"))
              end if
              king.txt "<script>window.parent.posthtm('../system/manage.asp?action=filemanage','aja','path="&server.urlencode(path&upload.form("upfile_name"))&"&type="&ftype&"&formname="&formname&"');window.parent.display('flo');</script>"'king.lang("'上傳成功'")
             else
          c6281564 發表于:15-06-18 16:23 沙發 [回復] #Top#
          c6281564 人氣:8 積分:17 金幣:156
          代碼太長了,看懂一部分了

          1Next >

          發表回復

          帳號 匿名發布 審核后可見 [加載完整在線編輯器]
          內容
          驗證碼
          KingCMS 內容管理系統

          關于我們 聯系我們 廣告報價 付款方式 站點導航

          Copyright © 2004-2015 Focuznet All rights reserved.

          廣州唯眾網絡科技有限公司 粵ICP備08008106號

          国产精品无码素人福利_美女下部裸体张开腿视频_99久久99久久_亚洲成av人片在线播放无码