VBS相册生成脚本[_vbs

此脚本的功能为将一个目录中的jpg,gif,png格式的图片生成Html相册,页面上的图像只是改变显示大小,并没有生成缩略图。
用到的技术:Scripting.FileSystemObject,Adodb.Stream。其中得到图片长宽用了秋水无恨的Adodb.Stream取得图像的高宽

复制代码 代码如下:

'///////////////////////////////////////////////
'VBS相册生成脚本,使用方法:将此文件放在sendto目录中(在运行中输入直接sendto,就可以打开),然后在有图片的文件夹上点右键,选择发送到,等一下,就OK了。
'海娃 http://www.51windows.Net
'更新日期:2004-12-30
'///////////////////////////////////////////////

Set ArgObj = WScript.Arguments
Set fsoBrowse = CreateObject("Scripting.FileSystemObject")
dim cpath,imgw,imgh,pagesize,wn,hn,pagetitle,filenamestart,firstpage
cpath=ArgObj(0)'传递路径
imgw = 240
imgh = 180
wn = 3
hn = 3
pagetitle = "图片展示 - 51windows.Net"
filenamestart = "Page_"
firstpage = "index.htm"

pagetitle2 = inputbox("请输入页面标题","请输入页面标题",pagetitle)
if isempty(pagetitle2) = false and len(pagetitle2) > 1 then
    pagetitle = pagetitle2
end if

filenamestart2 = inputbox("请输入文件名前缀","请输入文件名前缀",filenamestart)
if isempty(filenamestart2) = false and len(filenamestart2) > 1 then
    filenamestart = filenamestart2
end if

firstpage2 = inputbox("请输入第一页的文件名,点取消按序号生成","请输入第一页的文件名",firstpage)
if isempty(firstpage2) = false and len(filenamestart2) > 1 then
    firstpage = firstpage2
else
    firstpage = ""
end if

if len(firstpage) > 0 and (right(lcase(firstpage),4)<>".htm" and right(lcase(firstpage),5)<>".html") then
    firstpage = firstpage & ".htm"
end if

imgw2 = inputbox("请输入小图的宽度","请输入小图的宽度",imgw)
if isnumeric(imgw2) and isempty(imgw2) = false then
    imgw = imgw2
end if

imgh2 = inputbox("请输入小图的高度","请输入小图的高度",imgh)
if isnumeric(imgh2) and isempty(imgh2) = false then
    imgh = imgh2
end if

wn2 = inputbox("请输入每行的图像数","请输入每行的图像数",wn)
if isnumeric(wn2) and isempty(wn2) = false then
    wn = wn2
end if

hn2 = inputbox("请输入行数","请输入行数",hn)
if isnumeric(hn2) and isempty(hn2) = false then
    hn = hn2
end if

dim info
info = "<!-- 本页面有 VBScript 相册生成脚本生成,http://www.51windows.Net -->"
pagesize = wn*hn

dim message
message = ""
message = message & "文件路径:" & chr(9) & cpath & vbnewline
message = message & "页面标题:" & chr(9) & pagetitle & vbnewline
message = message & "文件名前缀:" & chr(9) & filenamestart & vbnewline
message = message & "首页文件名:" & chr(9) & firstpage & vbnewline
message = message & "小图的宽度:" & chr(9) & imgw & vbnewline
message = message & "小图的高度" & chr(9) & imgh & vbnewline
message = message & "每行的图像数:" & chr(9) & wn & vbnewline
message = message & "行数:" & chr(9) & chr(9) & hn & vbnewline

message = message & vbnewline & "确定生成吗?" & vbnewline

dim StartRun
StartRun = msgbox(message,1,"VBS相册生成脚本")

if StartRun=1 then
    CreatPageHtml(FileInofList(cpath))
end if

function FileInofList(cpath)
    ON ERROR RESUME NEXT
    dim FileNameListStr
    FileNameListStr=""
    filesize = 0
    if fsoBrowse.FolderExists(cpath)then
        Set theFolder=fsoBrowse.GetFolder(cpath)
        Set theFiles=theFolder.Files
        For Each x In theFiles
            if right(lcase(x.name),4) = ".gif" or right(lcase(x.name),4) = ".png" or right(lcase(x.name),4) = ".jpg" then
                if x.Size>0 then
                    set qswh=new qswhImg
                    arr=qswh.getimagesize(cpath & "\" & x.name)'取得图片的扩展名,高宽信息
                    dim imgext,imgWidth,imgheight
                    imgext = arr(0)
                    imgWidth = arr(1)
                    imgheight = arr(2)
                    if lcase(imgext) = "gif" or lcase(imgext) = "jpg" or lcase(imgext) = "png" then
                        FileNameListStr = FileNameListStr & x.name & "|"& x.Size &"|"& imgWidth & "|" & imgheight &"***"
                    end if
                end if
            end if
        next
    end if
    set fsoBrowse = nothing
    if len(FileNameListStr)>3 then
        FileNameListStr = left(FileNameListStr,len(FileNameListStr)-3)
    end if
    FileInofList = FileNameListStr
    if err<>0 then
        msgbox "FileInofList 出错了:" & err.description
        err.clear
    end if
end function

sub CreatPageHtml(ListStr)
    ON ERROR RESUME NEXT
    dim filenamearr,filenamenum,outstr
    filenamearr = split(ListStr,"***")
    filenamenum = ubound(filenamearr)
    outstr = ""
    for a = 0 to filenamenum
        thisstr = filenamearr(a)
        thisstrarr = split(thisstr,"|")
        if ubound(thisstrarr) = 3 then
            dim w,h
            w = thisstrarr(2)
            h = thisstrarr(3)
            okw = imgw
            okh = imgh
            if (w/h)>(imgw/imgh) then
                if int(w)>=int(imgw) then
                    okw = imgw
                    okh = formatnumber(h*imgw/w,0)
                else
                    okw = w
                    okh = h
                end if
            else
                if int(h)>=int(imgh) then
                    okh = imgh
                    okw = formatnumber(w*imgh/h,0)
                else
                    okw = w
                    okh = h
                end if
            end if
            dim vspace
            vspace = 0
            if int(imgh)>int(okh) then
                vspace = formatnumber((imgh-okh)/2,0)-3
            end if
            if int(vspace)<1 then
                vspace = 0
            end if
            outstr = outstr & "<div class=""oneDiv"">" & vbnewline
            outstr = outstr & "    <div class=""ImgDiv""><a href="""& thisstrarr(0) &""" onclick=""ShowImg(this.href,"& w &","& h &");return false""><img border=""0"" title="""& thisstrarr(0) &"("& thisstrarr(1) &" byte)"" alt="""& thisstrarr(0) &""" src="""& thisstrarr(0) &""" align=""center"" hspace=""0"" vspace="""& vspace &""" width="""& okw &""" height="""& okh &"""></a></div>" & vbnewline
            outstr = outstr & "    <div class=""TextDiv""><a href="""& thisstrarr(0) &""" onclick=""ShowImg(this.href,"& w &","& h &");return false"">"& thisstrarr(0) &"</a></div>" & vbnewline
            outstr = outstr & "</div>" & vbnewline
        end if
        if ((a+1) mod pagesize = 0) or (a = filenamenum) then
            dim n1,nn
            n1 = formatnumber(((a+1)/pagesize+0.49999),0)
            nn = formatnumber((filenamenum+1)/pagesize+0.49999,0)
            pagestr = "<div>"
            if int(pagesize) = 1 then
                nn = int(nn)+1
            end if
            for b = 1 to nn
                bb = addzero(b,nn)
                if int(b)<>int(n1) then
                    if int(b) = 1 and firstpage<>"" then
                        pagestr = pagestr & " <a href="""& firstpage &""">"& bb &"</a> "
                    else
                        pagestr = pagestr & " <a href="""& filenamestart &""& bb &".htm"">"& bb &"</a> "
                    end if
                else
                    pagestr = pagestr & " "& bb &" "
                end if
            next
            pagestr = pagestr & "</div><div align=""center"">"
            if int(n1) = 1 then
                pagestr = pagestr & "<span id=""PrevLink"">[ Prev ]</span>"
            else
                if int(n1) = 2 and firstpage<>"" then
                    pagestr = pagestr & "[ <a id=""PrevLink"" href="""& firstpage &""">Prev</a> ]"
                else
                    pagestr = pagestr & "[ <a id=""PrevLink"" href="""& filenamestart &""& addzero((n1-1),nn) &".htm"">Prev</a> ]"
                end if
            end if
            if int(n1) = int(nn) then
                pagestr = pagestr & "<span id=""NextLink"">[ Next ]</span>"
            else
                pagestr = pagestr & "[ <a id=""NextLink"" href="""& filenamestart &""& addzero((n1+1),nn) &".htm"">Next</a> ]"
            end if

            if int(nn) > 1 then
                pagestr = "<div class=""pageDiv"">"& pagestr & "</div></div>"
            else
                pagestr = ""
            end if
            if int(n1) = 1 and firstpage<>"" then
                creatfile outstr,pagestr,"/"& firstpage
            else
                creatfile outstr,pagestr,"/"& filenamestart &""& addzero(n1,nn) &".htm"
            end if
            outstr = ""
        end if
    next
    if err=0 then
        msgbox "文件已生成"
    else
        msgbox "CreatPageHtml 出错了:" & err.description
        err.clear
    end if
end sub

function addzero(num1,numn)
    addzero = right("00000000"&num1,len(numn))
end function

function formattitle(str)
    str1 = str
    str1 = replace(str1,"""","")
    formattitle = str1
end function

sub creatfile(outstr,pagestr,name)
    ON ERROR RESUME NEXT
    dim tmphtml
    tmphtml = tmphtml &  "<html>" & vbNewLine 
    tmphtml = tmphtml &  "<head>" & vbNewLine 
    tmphtml = tmphtml &  "<meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312"">" & vbNewLine 
    tmphtml = tmphtml &  "<meta name=""GENERATOR"" content=""Microsoft FrontPage 4.0"">" & vbNewLine 
    tmphtml = tmphtml &  "<meta name=""ProgId"" content=""FrontPage.Editor.Document"">" & vbNewLine 
    tmphtml = tmphtml &  "<title>"& pagetitle &"</title>" & vbNewLine 
    tmphtml = tmphtml &  "<style>" & vbNewLine 
    tmphtml = tmphtml &  "<!--" & vbNewLine 
    tmphtml = tmphtml &  "body     {margin:0px;}" & vbNewLine 
    tmphtml = tmphtml &  ".TitleDiv     {margin:2px;padding:2px;display:block;font-size:18pt;font-family:Verdana;width:"& (int(imgw)+20)*wn &"px;}" & vbNewLine
    tmphtml = tmphtml &  ".pageDiv     {margin:2px;padding:2px;display:block;font-size:11pt;font-family:Verdana;word-break : break-all;width:"& (int(imgw)+20)*wn &"px;}" & vbNewLine
    tmphtml = tmphtml &  "a   {word-break : break-all;}" & vbNewLine 
    tmphtml = tmphtml &  ".FullDiv     {margin:0px;padding:0px;width:"& (int(imgw)+20)*wn &"px;}" & vbNewLine 
    tmphtml = tmphtml &  ".oneDiv      {background-color: #FFFFFF; border: 0px solid #F2F2F2; padding: px;margin:2px;width:"& (int(imgw)+12) &"px;height:"& (int(imgh)+30) &"px;float:left;}" & vbNewLine 
    tmphtml = tmphtml &  ".ImgDiv      {background-color: #F2F2F2; border: 1px solid #999999; padding: 2px;margin:2px;width:"& (int(imgw)+8) &"px;height:"& (int(imgh)+4) &"px;overflow:hidden;text-align:center;}" & vbNewLine 
    tmphtml = tmphtml &  ".TextDiv     {background-color: #F2F2F2; border: 1px solid #999999; padding: 2px;margin:2px;width:"& (int(imgw)+8) &"px;height:20px;overflow:hidden;text-align:center;font-size:9pt;font-family:Verdana;}" & vbNewLine 
    tmphtml = tmphtml &  "-->" & vbNewLine 
    tmphtml = tmphtml &  "</style>" & vbNewLine 
    tmphtml = tmphtml &  "</head>" & vbNewLine 
    tmphtml = tmphtml &  "<body onkeydown=""if(event.keyCode==37){if(PrevLink.href){window.open(PrevLink.href,'_self','')}}else if(event.keyCode==39){if(NextLink.href){window.open(NextLink.href,'_self','')}}"">" & vbNewLine 
    tmphtml = tmphtml &  "<SCRIPT LANGUAGE=""JavaScript"">" & vbNewLine 
    tmphtml = tmphtml &  "<!--" & vbNewLine 
    tmphtml = tmphtml &  "function ShowImg(url,w,h)" & vbNewLine 
    tmphtml = tmphtml &  "{" & vbNewLine 
    tmphtml = tmphtml &  "newwin = window.open(""about:blank"","""",""width=""+(w-3)+"",height=""+(h-3)+"",left=""+(window.screen.width-w)/2+"",top=""+(window.screen.height-h)/2+"""")" & vbNewLine 
    tmphtml = tmphtml &  "newwin.document.write ('<html><title>View Image - 51windows.Net</title><head><meta http-equiv=Content-Type content=""text/html; charset=gb2312""></head><body style=""border:0px;margin:0px;"" onkeydown=if(event.keyCode==27){window.close()}><center><img title=""点击关闭窗口"" onclick=""window.close()"" style=""cursor:hand;"" border=""0"" src=""'+url+'"" align=""absmiddle"" hspace=""0"" vspace=""0"" width=""'+w+'"" height=""'+h+'""></center></body></html>')" & vbNewLine 
    tmphtml = tmphtml &  "}" & vbNewLine 
    tmphtml = tmphtml &  "//-->" & vbNewLine 
    tmphtml = tmphtml &  "</SCRIPT>" & vbNewLine 
    tmphtml = tmphtml &  "<div class=""TitleDiv"">"& pagetitle &"</div>" & vbNewLine
    tmphtml = tmphtml &  pagestr & vbNewLine 
    tmphtml = tmphtml &  "<div class=""FullDiv"">" & vbNewLine 
    tmphtml = tmphtml &  outstr & vbNewLine 
    tmphtml = tmphtml &  "</div>" & vbNewLine
    tmphtml = tmphtml &  "<div class=""TitleDiv"" align=""center""><a target=""_blank"" href=""http://www.51windows.Net"">www.51windows.Net</a></div>" & vbNewLine
    tmphtml = tmphtml &  info & vbNewLine 
    tmphtml = tmphtml &  "</body>" & vbNewLine 
    tmphtml = tmphtml &  "</html>" & vbNewLine 

    dim htmlstr
    htmlstr = tmphtml

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fout = fso.CreateTextFile(cpath&name,true,false)
    fout.WriteLine htmlstr
    fout.close
    set fso = nothing
    if err<>0 then
        msgbox "creatfile 出错了:" & err.description
        err.clear
    end if
end sub

Class qswhImg
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 I, Str
    For I=1 to LenB(Bin)
        clow=MidB(Bin,I,1)
        if ASCB(clow)<128 then
            Str = Str & Chr(ASCB(clow))
        else
            I=I+1
            if I <= LenB(Bin) then Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
        end if
    Next 
    Bin2Str = Str
End Function

Private Function Num2Str(num,base,lens)
    'qiushuiwuhen (2002-8-12)
    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)
    'qiushuiwuhen (2002-8-12)
    dim ret
    ret = 0
    for i=1 to len(str)
        ret = ret *base + cint(mid(str,i,1))
    next
    Str2Num=ret
End Function

Private Function BinVal(bin)
    'qiushuiwuhen (2002-8-12)
    dim ret
    ret = 0
    for i = lenb(bin) to 1 step -1
        ret = ret *256 + ascb(midb(bin,i,1))
    next
    BinVal=ret
End Function

Private Function BinVal2(bin)
    'qiushuiwuhen (2002-8-12)
    dim ret
    ret = 0
    for i = 1 to lenb(bin)
        ret = ret *256 + ascb(midb(bin,i,1))
    next
    BinVal2=ret
End Function

Function getImageSize(filespec) 
    'qiushuiwuhen (2002-9-3)
    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
End Class

使用方法:将此文件放在sendto目录中(在运行中输入直接sendto,就可以打开),然后在有图片的文件夹上点右键,选择发送到,等一下,就OK了。下载操作演示

效果1:Logo展示
效果2:圣诞新年LOGO集锦

时间: 2024-09-16 23:49:22

VBS相册生成脚本[_vbs的相关文章

使用 Adsutil.vbs iis管理脚本_vbs

应用到: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1 Adsutil.vbs 是一个 IIS 管理实用程序,它通过结合使用 Microsoft Visual Basic Scripting Edition (VBScript) 与 Active Directory 服务界面 (ADSI) 来处理 IIS 配置.该脚本应通过随 Windows 脚本主机一同安装的 CScript 运行. 重要事项

Iiscnfg.vbs IIS 配置脚本_vbs

导入和导出本地或远程计算机上 Internet 信息服务 (IIS) 配置数据库的所有或选定元素,或者将整个 IIS 配置(配置数据库和架构)复制到另一台计算机以复制配置.Iiscnfg 执行下列功能: 若要查看该命令语法,请单击以下命令: iiscnfg /export 以加密或未加密格式将所有或部分 IIS 配置数据库复制到 XML 文件.然后可在导入操作中使用 XML 文件来将所有或部分配置数据库复制到其他 IIS 配置. 语法 iiscnfg[.vbs] /export /f [Path

VBS 路由重启脚本_vbs

复制代码 代码如下: Set sh=WScript.CreateObject("WScript.Shell") sh.Run "telnet 192.168.1.1" WScript.Sleep 1000 sh.SendKeys "admin{ENTER}" WScript.Sleep 1000 sh.SendKeys "admin{ENTER}" WScript.Sleep 1000 sh.SendKeys "re

ACDSee的HTML相册生成

  随着数码相机的普及,每次出游回来都会面对数量上百的照片整理,处理效率还是非常重要的因素.ACDSee 3.1(完整版)仍然是我目前最常用的照片查看/归档工具.以下是使用ACDSee进行照片整理和HTML相册生成的经验总结,大部分操作都可以完全只使用键盘操作完成. 照片汇总和批量重命名 可以先将所有的数码相机的照片汇总到一个目录下后,按照时间排序并批量重命名 按时间排序:在ACDSEE的浏览器模式下按:F12 按照详细资料列表模式浏览,如果列表字段中没有最后更新时间(modified)字段,则

SQL SERVER2008数据库远程生成脚本问题

问题描述 SQL SERVER2008数据库远程生成脚本问题 我在本机登录远程数据库后生成脚本完成后,远程数据库就登不上了,请问会不会对远程数据库有影响啊?急急急 解决方案 你生成了什么脚本,改变了哪些sql server的设置.如果仅仅是数据库查询,是不会影响登录的.但是你删除了账户甚至停止了sql服务,那就没法登录了. 解决方案二: 如何将数据库sql server2008中的数据库生成脚本输出SQL Server2008 自动生成数据库脚本关于连接SQL Server2008数据库是连接字

怎么把数据库传到申请的云虚拟主机上面啊,生成脚本再导入老是出错

问题描述 怎么把数据库传到申请的云虚拟主机上面啊,生成脚本再导入老是出错,求大神帮忙,最好是远程帮一下 解决方案 解决方案二:你的报的是什么错?解决方案三:什么数据库?

photoalbum 0.4.0 发布,静态 HTML 相册生成工具

photoalbum 0.4.0 发布,支持子相册,包含一个相册概述页面.添加了一个 'makemake' 参数,删除了 'all' 参数.同时还重构了一些代码. photoalbum 使用 ImageMagick 来生成一系列的 HTML 页面相册,它只需要一个包含图片的输入目录(可以包括多个子目录),就可以输出一个静态的 ./dist 目录,其中有分布在静态网络服务器上的,包括缩略图的静态的 HTML 页面. 相关链接 photoalbum 的详细介绍:点击查看 photoalbum 的下载

EXE2BAT(EXE转BAT)的vbs脚本_vbs

exe2bat的脚本 复制代码 代码如下: fp=wscript.arguments(0) fn=right(fp,len(fp)-instrrev(fp,"")) with createobject("adodb.stream") .type=1:.open:.loadfromfile fp:str=.read:sl=lenb(str) end with sll=sl mod 65536:slh=sl65536 with createobject("sc

reg2vbs.vbs 将Reg文件转换为VBS文件保存 脚本之家修正版本_vbs

复制代码 代码如下: '***************************************************************************** ' FileName: Reg2Vbs.VBS ' Author: baomaboy ' Abstract: 将Reg文件转换为VBS文件保存 '***************************************************************************** Dim WshSh