<%
Classe imgwhinfo '' , , 支持 jpg , gif , png , bmp
Dim Aso
Sub -Class_initialize privado
Definir aso = server.createObject ("adodb.stream")
ASO.MODE = 3
ASO.TYPE = 1
ASO.OPEN
Final sub
Sub -Class_terminado privado
Err.clear
Definir aso = nada
Final sub
Função privada bin2str (lixo)
Dim i, str
Para i = 1 a lenb (bin)
Clow = MIDB (bin, i, 1)
Se ASCB (Clow) <128 então
Str = str & ch (ASCB (Clow))
Outro
I = i+1
Se i <= lenb (bin) então str = str & ch (ascw (midb (bin, i, 1) e coro
Final se
Próximo
Bin2str = str
Função final
Função privada num2str (num, base, lente)
Dim ret
Ret = ""
While (num> = base)
RET = (Num Mod Base) e RET
Num = (num - num mod base)/base
Wend
Num2str = direita (string (lente, "0") e num & ret, lente)
Função final
Função privada str2num (str, base)
Dim ret, i
Ret = 0
Para i = 1 a len (str)
Ret = ret *base + cint (mid (str, i, 1))
Próximo
Str2num = ret
Função final
Função privada Binval (BIN)
Dim ret, i
Ret = 0
Para i = lenb (bin) a 1 etapa -1
Ret = ret *256 + ASCB (midb (bin, i, 1))
Próximo
Binval = ret
Função final
Função privada binval2 (lixo)
Dim ret, i
Ret = 0
Para i = 1 a lenb (bin)
Ret = ret *256 + ASCB (midb (bin, i, 1))
Próximo
Binval2 = ret
Função final
Função privada getImagesize (FILESC)
Dim bflag
Dim ret (3)
ASO.LOADFROMFILE (FILESC)
bflag = aso.read (3)
Selecione Case Hex (Binval (BFLAG))
Caso "4E5089":
Aso.read (15)
ret (0) = "png"
ret (1) = binval2 (aso.read (2))
Aso.read (2)
ret (2) = binval2 (aso.read (2))
Caso "464947":
ASO.read (3)
ret (0) = "gif"
ret (1) = binval (aso.read (2))
ret (2) = binval (aso.read (2))
Caso "535746":
Aso.read (5)
bindata = aso.read (1)
sconv = num2str (ASCB (bindata), 2, 8)
nbits = str2num (esquerda (sconv, 5), 2)
SCONV = MID (SCONV, 6)
Enquanto (len (sconv) <nbits*4)
bindata = aso.read (1)
sconv = sconv & num2str (ascb (bindata), 2, 8)
Wend
ret (0) = "SWF"
ret (1) = int (abs (str2num (médio (sconv, 1*nbits+1, nbits), 2) -Str2num (mid (sconv, 0*nbits+1, nbits), 2))/20)
ret (2) = int (abs (str2num (médio (sconv, 3*nbits+1, nbits), 2) -Str2num (mid (sconv, 2*nbits+1, nbits), 2))/20)
Caso "ffd8ff":
Fazer
Do: p1 = binval (aso.read (1)): loop while p1 = 255 e não aso.eos
Se P1> 191 e P1 <196, então a saída do outro
Do: p1 = binval (aso.read (1)): loop while p1 <255 e não aso.eos
Loop enquanto verdadeiro
ASO.read (3)
ret (0) = "jpg"
ret (2) = binval2 (aso.read (2))
ret (1) = binval2 (aso.read (2))
Caso mais:
Se esquerdo (bin2str (bflag), 2) = "bm" então
Aso.read (15)
ret (0) = "bmp"
ret (1) = binval (aso.read (4))
ret (2) = binval (aso.read (4))
Outro
ret (0) = ""
Final se
Final Selecione
ret (3) = "width =" "" e ret (1) e "" "" e ret (2) & "" ""
getImagesize = ret
Função final
Função pública imgw (imgpath)
Dim FSO, imgfile, FileExt, arr
Set fso = server.createObject ("scripting.filesystemobject")