<%
Classe ImgWHInfo '获取图片宽度和高度的类,支持JPG,GIF,PNG,BMP
Faible ASO
Sous-classe privée_Initialize
Définir ASO=Server.CreateObject("ADODB.Stream")
ASO.Mode=3
ASO.Type=1
ASO.Ouvert
Fin du sous-marin
Sous-classe privée_Terminate
Err.Effacer
Définir ASO=Rien
Fin du sous-marin
Fonction privée Bin2Str(Bin)
Dim I, Str
Pour I=1 à LenB(Bin)
clow=MidB(Bin,I,1)
Si ASCB(clow)<128 Alors
Str = Str & Chr(ASCB(clow))
Autre
Je=Je+1
Si I <= LenB(Bin) Alors Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
Fin si
Suivant
Bin2Str = Chaîne
Fonction de fin
Fonction privée Num2Str(Num,Base,Lens)
Dim Retrait
Retrait = ""
Tandis que(Num>=Base)
Ret = (Num Mod Base) & Ret
Num = (Num - Num Mod Base)/Base
Wende
Num2Str = Droite(String(Lens,"0") & Num & Ret,Lens)
Fonction de fin
Fonction privée Str2Num(Str,Base)
Dim Ret,je
Ret = 0
Pour I=1 À Len(Str)
Ret = Ret *base + Cint(Mid(Str,I,1))
Suivant
Str2Num=Ret
Fonction de fin
Fonction privée BinVal (Bin)
Dim Ret,je
Ret = 0
Pour I = LenB(Bin) à 1 étape -1
Ret = Ret *256 + AscB(MidB(Bin,I,1))
Suivant
BinVal=Ret
Fonction de fin
Fonction privée BinVal2(Bin)
Dim Ret,je
Ret = 0
Pour I = 1 à LenB(Bin)
Ret = Ret *256 + AscB(MidB(Bin,I,1))
Suivant
BinVal2=Ret
Fonction de fin
Fonction privée GetImageSize (filespec)
Dim bFlag
Faible Retrait(3)
ASO.LoadFromFile(filespec)
bFlag=ASO.Read(3)
Sélectionnez Case Hex(binVal(bFlag))
Cas « 4E5089 » :
ASO.Lire(15)
ret(0)="PNG"
ret(1)=BinVal2(ASO.Read(2))
ASO.Lire(2)
ret(2)=BinVal2(ASO.Read(2))
Cas « 464947 » :
ASO.read(3)
ret(0)="gif"
ret(1)=BinVal(ASO.Read(2))
ret(2)=BinVal(ASO.Read(2))
Cas « 535746 » :
ASO.read(5)
binData=ASO.Read(1)
sConv=Num2Str(ascb(binData),2,8)
nBits=Str2Num(gauche(sConv,5),2)
sConv=milieu(sConv,6)
Tandis que(len(sConv)<nBits*4)
binData=ASO.Read(1)
sConv=sConv&Num2Str(AscB(binData),2 ,8)
Wende
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)
Cas "FFD8FF" :
Faire
Faites : p1=binVal(ASO.Read(1)) : boucle While p1=255 et non ASO.EOS
Si p1>191 et p1<196 alors quitter, faire autrement ASO.read(binval2(ASO.Read(2))-2)
Do:p1=binVal(ASO.Read(1)):Boucle While p1<255 et non ASO.EOS
Boucle tant que vrai
ASO.Lire(3)
ret(0)="JPG"
ret(2)=binval2(ASO.Read(2))
ret(1)=binval2(ASO.Read(2))
Autre cas :
Si gauche(Bin2Str(bFlag),2)="BM" Alors
ASO.Lire(15)
ret(0)="BMP"
ret(1)=binval(ASO.Read(4))
ret(2)=binval(ASO.Read(4))
Autre
ret(0)=""
Fin si
Fin de la sélection
ret(3)="largeur=""" & ret(1) &""" hauteur=""" & ret(2) &""""
getimagesize=ret
Fonction de fin
Fonction publique imgW (IMGPath)
Dim FSO,IMGFile,FileExt,Arr
Définir FSO = Server.CreateObject("Scripting.FileSystemObject")
Si (FSO.FileExists(IMGPath)) Alors
Définir IMGFile = FSO.GetFile (IMGPath)
FileExt=FSO.GetExtensionName(IMGPath)
Sélectionnez Case FileExt
Cas "gif", "bmp", "jpg", "png":
Arr=GetImageSize(IMGFile.Path)
imgW = Arr(1)
Fin de la sélection
Définir IMGFile=Rien
Autre
imgW = 0
Fin si
Définir FSO=Rien
Fonction de fin
Fonction publique imgH(IMGPath)
Dim FSO,IMGFile,FileExt,Arr
Définir FSO = server.CreateObject("Scripting.FileSystemObject")
Si (FSO.FileExists(IMGPath)) Alors
Définir IMGFile = FSO.GetFile (IMGPath)
FileExt=FSO.GetExtensionName(IMGPath)
Sélectionnez Case FileExt
Cas "gif", "bmp", "jpg", "png":
Arr=getImageSize(IMGFile.Path)
imgH = Arr(2)
Fin de la sélection
Définir IMGFile=Rien
Autre
imgH = 0
Fin si
Définir FSO=Rien
Fonction de fin
Fin de la classe
IMGPath="Test.jpg"
Définir PP = New ImgWHInfo
W = PP.imgW(Serveur.Mappath(IMGPath))
H = PP.imgH(Serveur.Mappath(IMGPath))
Définir pp = Rien
Response.Write("<img src=""&IMGPath&"' border=0><br>宽:"&W&";高:"&H)
%>