|
热门文章 |
|
|
|
相关文章 |
|
没有相关文章 |
|
|
asp浏览文件夹下面所有图片 |
来源:源码天空 更新时间:2011/4/24 14:51:31 阅读次数:
字体:[大 中 小大 中 小大 中 小] 我要投稿 |
运行效果:
程序代码: <% '+-----------------------------------+ '| 变量设置 '+-----------------------------------+ cTitle = "所有上传图片(注:以下为图片文件夹下面所有图片,并非全部为有效图片!)" '名字 cPicType = "jpeg,jpg,gif,png,bmp" '图片类型 (使用","将图片格式分开) cHeight = 120 '缩图高度 cWidth = 120 '缩图宽度 cEachLineMax = 5 '每行显示图片数 cEachPageMax = 20 '每页显示图片数目 pic_path="/uploadpic/" '设定图片所在路径 '+-----------------------------------+ '| 定义函数 '+-----------------------------------+ Function getExt(name) getExt = right(name, 3) End Function Function isPIC(fileName, picType) ext = getExt(fileName) isPIC = False typeList = split(picType, ",") For ii = LBound(typeList) To UBound(typeList) If UCase(ext) = UCase(typeList(ii)) Then isPIC = True Exit For End If Next End Function Function pageBar(page, pageTotal) response.Write "[ <A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=" & (page - 1) & " title=上一页>上一页</A> ] " response.Write "<A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=1 title=首页><< </A>" i = pageStart Do while i < page response.Write "<A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=" & i & " title=""第 " & i & " 页"">[" & i & "]</A> " i = i + 1 Loop response.Write "[<FONT COLOR=red><B>" & page & "</B></FONT>]" i = pageMiddle Do while i <= pageEnd response.Write "<A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=" & i & " title=""第 " & i & " 页"">[" & i & "]</A> " i = i + 1 Loop response.Write "...<A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=" & pageTotal & " title=""第 " & pageTotal & " 页"">[" & pageTotal & "]</A>" response.Write " <A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=" & pageTotal & " title=尾页>>></A>" response.Write "[ <A HREF="&Request.ServerVariables("SCRIPT_NAME")&"?page=" & (page + 1) & " title=下一页>下一页</A> ] 共 <B><FONT COLOR=red>" & pageTotal & "</FONT></B> 页 当前所在第 <B><FONT COLOR=red>" & page & "</FONT></B> 页 图片数 : <B><FONT COLOR=red>" & picTotal & "</FONT></B>" End Function '+-----------------------------------+ '| 取图片尺寸类 '+-----------------------------------+ Class possible dim aso Private Sub Class_Initialize set aso=CreateObject("Adodb.Stream") aso.Mode=3 aso.Type=1 aso.Open End Sub Private Sub Class_Terminate set aso=nothing End Sub Private Function Bin2Str(Bin) Dim K, Str For K=1 to LenB(Bin) clow=MidB(Bin,K,1) if ASCB(clow)<128 then Str = Str & Chr(ASCB(clow)) else K=K+1 if K <= LenB(Bin) then Str = Str & Chr(ASCW(MidB(Bin,K,1)&clow)) end if Next Bin2Str = Str End Function Private Function Num2Str(num,base,lens) dim ret ret = "" while(num>=base) ret = (num mod base) & ret num = (num - num mod base)/base wend Num2Str = right(string(lens,"0") & num & ret,lens) End Function Private Function Str2Num(str,base) dim ret ret = 0 for k=1 to len(str) ret = ret *base + cint(mid(str,k,1)) next Str2Num=ret End Function Private Function BinVal(bin) dim ret ret = 0 for k = lenb(bin) to 1 step -1 ret = ret *256 + ascb(midb(bin,k,1)) next BinVal=ret End Function Private Function BinVal2(bin) dim ret ret = 0 for k = 1 to lenb(bin) ret = ret *256 + ascb(midb(bin,k,1)) next BinVal2=ret End Function Private Function getImageSize(filespec) dim ret(3) aso.LoadFromFile(filespec) bFlag=aso.read(3) select case hex(binVal(bFlag)) case "4E5089": aso.read(15) ret(0)="PNG" ret(1)=BinVal2(aso.read(2)) aso.read(2) ret(2)=BinVal2(aso.read(2)) case "464947": aso.read(3) ret(0)="GIF" ret(1)=BinVal(aso.read(2)) ret(2)=BinVal(aso.read(2)) case "535746": aso.read(5) binData=aso.Read(1) sConv=Num2Str(ascb(binData),2 ,8) nBits=Str2Num(left(sConv,5),2) sConv=mid(sConv,6) while(len(sConv)<nBits*4) binData=aso.Read(1) sConv=sConv&Num2Str(ascb(binData),2 ,8) wend ret(0)="SWF" ret(1)=int(abs(Str2Num(mid(sConv,1*nBits+1,nBits),2)-Str2Num(mid(sConv,0*nBits+1,nBits),2))/20) ret(2)=int(abs(Str2Num(mid(sConv,3*nBits+1,nBits),2)-Str2Num(mid(sConv,2*nBits+1,nBits),2))/20) case "FFD8FF": do do: p1=binVal(aso.Read(1)): loop while p1=255 and not aso.EOS if p1>191 and p1<196 then exit do else aso.read(binval2(aso.Read(2))-2) do:p1=binVal(aso.Read(1)):loop while p1<255 and not aso.EOS loop while true aso.Read(3) ret(0)="JPG" ret(2)=binval2(aso.Read(2)) ret(1)=binval2(aso.Read(2)) case else: if left(Bin2Str(bFlag),2)="BM" then aso.Read(15) ret(0)="BMP" ret(1)=binval(aso.Read(4)) ret(2)=binval(aso.Read(4)) else ret(0)="" end if end select ret(3)="width=""" & ret(1) &""" height=""" & ret(2) &"""" getimagesize=ret End Function Function readX(pic_path) Set fso1 = server.CreateObject("Scripting.FileSystemObject") Set f1 = fso1.GetFile(pic_path) ext=fso1.GetExtensionName("."&pic_path) select case UCase(ext) case "GIF","BMP","JPG","PNG": arr=getImageSize(f1.path) readX = arr(1) case "swf" arr=pp.getimagesize(f1.path) readX = arr(1) end select Set f1=nothing Set fso1=nothing End Function Function readY(pic_path) Set fso1 = server.CreateObject("Scripting.FileSystemObject") Set f1 = fso1.GetFile(pic_path) ext=fso1.GetExtensionName("."&pic_path) select case UCase(ext) case "GIF","BMP","JPG","PNG": arr=getImageSize(f1.path) readY = arr(2) case "swf" arr=pp.getimagesize(f1.path) readY = arr(2) end select Set f1=nothing Set fso1=nothing End Function End Class '+-----------------------------------+ '| 数据处理 '+-----------------------------------+ Dim fileArray() reDim fileArray(0) Set fileObj = Server.CreateObject("Scripting.FileSystemObject") Set folderObj = fileObj.GetFolder(server.MapPath("."&pic_path)) i = 0 For Each file in folderObj.Files If isPIC(file.Name, cPicType) Then fileArray(i) = file.Name i = i + 1 reDim Preserve fileArray(i) End If Next Set FileObj = Nothing Set FolderObj = Nothing picTotal = UBound(fileArray) '+-----------------------------------+ '| 分页处理 '+-----------------------------------+ page = int(Request.QueryString("page")) pageTotal = -(int(-(picTotal/cEachPageMax))) If page = Empty or page < 0 Then page = 1 If page > pageTotal Then page = pageTotal offset = cEachPageMax * page start = offset - cEachPageMax If start < 0 Then start = 0 If offset > picTotal Then offset = picTotal pageStart = page - cEachPageMax If pageStart <= 0 Then pageStart = 1 pageMiddle = page + 1 pageEnd = pageMiddle + cEachPageMax If page <= cEachPageMax Then pageEnd = cEachPageMax * 2 If pageEnd > pageTotal Then pageEnd = pageTotal '+-----------------------------------+ '| 输出部分 '+-----------------------------------+ %> <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title> <%=cTitle%> </title> <style type='text/css'> a:link, a:visited, a:active { text-decoration: none; color: #000 } a:hover { color: orangered; text-decoration:none } BODY { scrollbar-face-color: #DEE3E7; scrollbar-highlight-color: #FFFFFF; scrollbar-shadow-color: #DEE3E7; scrollbar-3dlight-color: #D1D7DC; scrollbar-arrow-color: #006699; scrollbar-track-color: #EFEFEF; scrollbar-darkshadow-color: #98AAB1; font: 12px Verdana; color:#333333; font-family: Tahoma,Verdana, Tahoma, Arial,Helvetica, sans-serif; font-size: 12px; color: #000; margin:0px 12px 0px 12px;background-color:#FFF } TD {font: 12px Verdana; color:#333333; font-family: Tahoma,Verdana, Tahoma, Arial,Helvetica, sans-serif; font-size: 12px; color: #000; }; </style> </head> <body topmargin="0" leftmargin="0"> <script> tPopWait=20; showPopStep=10; popOpacity=85; sPop=null; curShow=null; tFadeOut=null; tFadeIn=null; tFadeWaiting=null; document.write("<style type='text/css'id='defaultPopStyle'>"); document.write(".cPopText { font-family: Verdana, Tahoma; background-color: #F7F7F7; border: 1px #000000 solid; font-size: 11px; padding-right: 4px; padding-left: 4px; height: 20px; padding-top: 2px; padding-bottom: 2px; filter: Alpha(Opacity=0)}"); document.write("</style>"); document.write("<div id='popLayer' style='position:absolute;z-index:500;' class='cPopText'></div>"); function showPopupText(){ var o=event.srcElement; MouseX=event.x; MouseY=event.y; if(o.alt!=null && o.alt!="") { o.pop=o.alt;o.alt="" } if(o.title!=null && o.title!=""){ o.pop=o.title;o.title="" } if(o.pop) { o.pop=o.pop.replace("\n","<br>"); o.pop=o.pop.replace("\n","<br>"); } if(o.pop!=sPop) { sPop=o.pop; clearTimeout(curShow); clearTimeout(tFadeOut); clearTimeout(tFadeIn); clearTimeout(tFadeWaiting); if(sPop==null || sPop=="") { popLayer.innerHTML=""; popLayer.style.filter="Alpha()"; popLayer.filters.Alpha.opacity=0; } else { if(o.dyclass!=null) popStyle=o.dyclass else popStyle="cPopText"; curShow=setTimeout("showIt()",tPopWait); } } } function showIt() { popLayer.className=popStyle; popLayer.innerHTML='<BR> '+sPop+' <BR><BR>'; popWidth=popLayer.clientWidth; popHeight=popLayer.clientHeight; if(MouseX+12+popWidth>document.body.clientWidth) popLeftAdjust=-popWidth-24 else popLeftAdjust=0; if(MouseY+12+popHeight>document.body.clientHeight) popTopAdjust=-popHeight-24 else popTopAdjust=0; popLayer.style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust; popLayer.style.top=MouseY+12+document.body.scrollTop+popTopAdjust; popLayer.style.filter="Alpha(Opacity=0)"; fadeOut(); } function fadeOut(){ if(popLayer.filters.Alpha.opacity<popOpacity) { popLayer.filters.Alpha.opacity+=showPopStep; tFadeOut=setTimeout("fadeOut()",1); } } document.onmouseover=showPopupText; </script> <br><br> <center> <%=cTitle%> <br><br> <% pageBar page, pageTotal %> <br><br> <table border="0" CELLPADDING="4" CELLSPACING="4"> <tr> <% '+-----------------------------------+ '| 循环输出图片 '+-----------------------------------+ j = 1 i = start Set pp = New possible Do While i < offset thisPicPath = server.mappath("."&pic_path & fileArray(i)) x = pp.readX(thisPicPath) y = pp.readY(thisPicPath) If x > cWidth or y > cHeight Then tWidth = x / cWidth : tHeight = y / cHeight If tWidth > tHeight Then w = cWidth h = y / tWidth Elseif tWidth < tHeight Then h = cHeight w = x / tHeight Else w = cWidth h = cHeight End If Else w = x h = y End If If j > cEachLineMax Then j = 1 response.Write "</tr><tr>" End If response.Write "<td style=""border: 1px solid #000000"" width=" & cWidth & " height=" & cHeight & " align=center><a href=""./"&pic_path & fileArray(i) & """ target=""_blank""><img border=0 src=" & "."& pic_path& fileArray(i) & " width=" & w & " height=" & h & " alt=""文件:" & fileArray(i) & " <br> 尺寸:" & x & " × " & y & " ""></a></td>" j = j + 1 i = i + 1 Loop Set pp = Nothing %> </tr> </table> <br> <% pageBar page, pageTotal %> </center> </body> </html> |
上一篇文章: 一个可以自动创建多级目录的asp函数下一篇文章: asp生成静态页面函数 |
|
|