<%
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 - Nombre Mod Base)/Base
Wende
Num2Str = Droite (Chaîne (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
Faire : p1=binVal(ASO.Read(1)) : Boucle While p1=255 et non ASO.EOS
Si p1>191 et p1<196 alors quittez, faites le reste 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 du cours
%>
<%
IMGPath=Test.jpg
Définir PP = Nouveau ImgWHInfo
W = PP.imgW(Serveur.Mappath(IMGPath))
H = PP.imgH(Serveur.Mappath(IMGPath))
Définir pp = Rien
%>
<%
Dim W,PXHauteur
Dim Pp'//Proportion
Si W=0 ou W= Alors
LargeurPX=0
PXHauteur=0
Autre
Pp=FormatNumber(W/H,2) '//长宽比
Fin si
Si W>=H Alors
Si W>=300 Alors
PXLargeur=300
PXHauteur=FormatNumber(300/Pp,0)
Autre
PXLargeur=W
PXHauteur=H
Fin si
Autre
Si PHauteur>=260 Alors
PXHauteur=260
PXLargeur=NuméroFormat(260*Pp,0)
Autre
PXLargeur=W
PXHauteur=H
Fin si
Fin si
réponse.Write(PXWidth)
%>
<img src=Test.jpg border=0 width=<%=PXWidth%>
hauteur=<%=PXHauteur%>>