您的位置:首页 > 编程语言 > ASP

利用ASP获取设置图片尺寸大小

2007-02-06 11:17 375 查看
<%
imgpath="default_22.gif"

response.write "<img src='"&imgpath&"' border=0 "&SetAutoImg(280,260,imgpath)&"><br>宽:"&GetImgW(ImgPath)&";高:"&GetImgH(ImgPath)
function GetImgW(ImgPath)
    set pp=new imgInfo 
    w=pp.imgW(server.mappath(ImgPath)) 
    set pp=nothing 
    GetImgW=w
end function

function GetImgH(ImgPath)
    set pp=new imgInfo 
    h=pp.imgH(server.mappath(ImgPath)) 
    set pp=nothing 
    GetImgH=h
end function

function SetAutoImg(fitWidth,fitHeight,ImgPath)
    hhRtn=0
    wwRtn=0
    set pp=new imgInfo 
    ww=pp.imgW(server.mappath(ImgPath)) 
    hh=pp.imgH(server.mappath(ImgPath))     
    set pp=nothing 
    if ww>0 and hh>0 then
        if ww/hh>=FitWidth/FitHeight then
            wwRtn=fitWidth
            hhRtn=(hh*FitWidth)/ww
        else
            hhRtn=fitHeight
            wwRtn=(ww*FitHeight)/hh
        end if
    end if
    SetAutoImg=" height='"&hhRtn&"'"&" width='"&wwRtn&"' "
end function

class imgInfo 
    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
    err.clear 
    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) 
    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 i=1 to len(str) 
    ret = ret *base + cint(mid(str,i,1)) 
    next 
    Str2Num=ret 
    End Function 
    
    Private Function BinVal(bin) 
    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) 
    dim ret 
    ret = 0 
    for i = 1 to lenb(bin) 
    ret = ret *256 + ascb(midb(bin,i,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 
    
    Public Function imgW(pic_path) 
    Set fso1 = server.CreateObject( "Scripting.FileSystemObject") 
    If (fso1.FileExists(pic_path)) Then 
    Set f1 = fso1.GetFile(pic_path) 
    ext=fso1.GetExtensionName(pic_path) 
    select case ext 
    case "gif","bmp","jpg","png": 
    arr=getImageSize(f1.path) 
    imgW = arr(1) 
    end select 
    Set f1=nothing 
    else 
    imgW = 0 
    End if 
    Set fso1=nothing 
    End Function 
    
    Public Function imgH(pic_path) 
    Set fso1 = server.CreateObject( "Scripting.FileSystemObject") 
    If (fso1.FileExists(pic_path)) Then 
    Set f1 = fso1.GetFile(pic_path) 
    ext=fso1.GetExtensionName(pic_path) 
    select case ext 
    case "gif","bmp","jpg","png": 
    arr=getImageSize(f1.path) 
    imgH = arr(2) 
    end select 
    Set f1=nothing 
    else 
    imgH = 0 
    End if 
    Set fso1=nothing 
    End Function 
End Class
%>

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息