<%
Класс imgwhinfo '' 获取图片宽度和高度的类 , 支持 jpg , Gif , png , bmp
DIM ASO
Private sub class_initialize
Установить aso = server.createObject ("adodb.stream")
Aso.mode = 3
Aso.type = 1
Aso.open
Конец суб
Приватный sub class_terminate
Err.clear
Установить aso = ничего
Конец суб
Частная функция bin2str (bin)
Dim I, Str
Для i = 1 до lenb (bin)
Clow = MidB (Bin, I, 1)
Если ASCB (Clow) <128 Then
Str = str & chr (ascb (clow))
Еще
I = i+1
Если i <= lenb (bin), то str = str & chr (ascw (midb (bin, i, 1) и clow)))
Конец, если
Следующий
Bin2str = str
Конечная функция
Частная функция num2str (num, base, объектив)
Dim ret
Ret = ""
While (num> = base)
Ret = (база Num Mod) и RET
Num = (num - num mod base)/base
Венд
Num2str = right (string (lens, "0") & num & ret, lens)
Конечная функция
Частная функция str2num (str, base)
Dim ret, я
Ret = 0
Для i = 1 до Лена (Str)
Ret = ret *base + cint (mid (str, i, 1))
Следующий
Str2num = ret
Конечная функция
Частная функция Binval (Bin)
Dim ret, я
Ret = 0
Для i = lenb (bin) до 1 шага -1
Ret = ret *256 + ascb (midb (bin, i, 1))
Следующий
Binval = ret
Конечная функция
Частная функция binval2 (bin)
Dim ret, я
Ret = 0
Для i = 1 до lenb (bin)
Ret = ret *256 + ascb (midb (bin, i, 1))
Следующий
Binval2 = ret
Конечная функция
Частная функция getImagesize (filepec)
Dim bflag
Dim ret (3)
Aso.loadfromfile (filepec)
bflag = aso.read (3)
Выберите Case Hex (Binval (BFLAG))
Случай "4E5089":
Aso.read (15)
ret (0) = "png"
ret (1) = binval2 (aso.read (2))
Aso.read (2)
ret (2) = binval2 (aso.read (2))
Дело "464947":
Aso.read (3)
ret (0) = "GIF"
ret (1) = binval (aso.read (2))
ret (2) = binval (aso.read (2))
Дело "535746":
Aso.read (5)
bindata = aso.read (1)
sconv = num2str (ascb (bindata), 2, 8)
nbits = str2num (слева (sconv, 5), 2)
sconv = mid (sconv, 6)
While (len (sconv) <nbits*4)
bindata = aso.read (1)
sconv = sconv & num2str (ascb (bindata), 2, 8)
Венд
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)
Дело "ffd8ff":
Делать
Do: p1 = binval (aso.read (1)): цикл, пока p1 = 255, а не aso.eos
Если P1> 191 и P1 <196, то выход еще один ASO.Read (binval2 (aso.read (2))-2)
Do: p1 = binval (aso.read (1)): цикл, пока P1 <255, а не Aso.eos
Петля в то время как правда
Aso.read (3)
ret (0) = "jpg"
ret (2) = binval2 (aso.read (2))
ret (1) = binval2 (aso.read (2))
Случай еще:
Если осталось (bin2str (bflag), 2) = "bm", тогда
Aso.read (15)
ret (0) = "bmp"
ret (1) = binval (aso.read (4))
ret (2) = binval (aso.read (4))
Еще
ret (0) = ""
Конец, если
Конец выбора
ret (3) = "width =" "" & ret (1) & "" "" & ret (2) & "" "" ""
getImagesize = ret
Конечная функция
Публичная функция IMGW (IMGPATH)
Dim FSO, Imgfile, FileExt, обр
SET FSO = server.createObject ("scripting.filesystemobject")