1
<%
2
Class ImgWHInfo '获取图片宽度和高度的类,支持JPG,GIF,PNG,BMP
3
Dim ASO
4
Private Sub Class_Initialize
5
Set ASO=Server.CreateObject("ADODB.Stream")
6
ASO.Mode=3
7
ASO.Type=1
8
ASO.Open
9
End Sub
10
Private Sub Class_Terminate
11
Err.Clear
12
Set ASO=Nothing
13
End Sub
14
15
Private Function Bin2Str(Bin)
16
Dim I, Str
17
For I=1 To LenB(Bin)
18
clow=MidB(Bin,I,1)
19
If ASCB(clow)<128 Then
20
Str = Str & Chr(ASCB(clow))
21
Else
22
I=I+1
23
If I <= LenB(Bin) Then Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
24
End If
25
Next
26
Bin2Str = Str
27
End Function
28
29
Private Function Num2Str(Num,Base,Lens)
30
Dim Ret
31
Ret = ""
32
While(Num>=Base)
33
Ret = (Num Mod Base) & Ret
34
Num = (Num - Num Mod Base)/Base
35
Wend
36
Num2Str = Right(String(Lens,"0") & Num & Ret,Lens)
37
End Function
38
39
Private Function Str2Num(Str,Base)
40
Dim Ret,I
41
Ret = 0
42
For I=1 To Len(Str)
43
Ret = Ret *base + Cint(Mid(Str,I,1))
44
Next
45
Str2Num=Ret
46
End Function
47
48
Private Function BinVal(Bin)
49
Dim Ret,I
50
Ret = 0
51
For I = LenB(Bin) To 1 Step -1
52
Ret = Ret *256 + AscB(MidB(Bin,I,1))
53
Next
54
BinVal=Ret
55
End Function
56
57
Private Function BinVal2(Bin)
58
Dim Ret,I
59
Ret = 0
60
For I = 1 To LenB(Bin)
61
Ret = Ret *256 + AscB(MidB(Bin,I,1))
62
Next
63
BinVal2=Ret
64
End Function
65
66
Private Function GetImageSize(filespec)
67
Dim bFlag
68
Dim Ret(3)
69
ASO.LoadFromFile(filespec)
70
bFlag=ASO.Read(3)
71
Select Case Hex(binVal(bFlag))
72
Case "4E5089":
73
ASO.Read(15)
74
ret(0)="PNG"
75
ret(1)=BinVal2(ASO.Read(2))
76
ASO.Read(2)
77
ret(2)=BinVal2(ASO.Read(2))
78
Case "464947":
79
ASO.read(3)
80
ret(0)="gif"
81
ret(1)=BinVal(ASO.Read(2))
82
ret(2)=BinVal(ASO.Read(2))
83
Case "535746":
84
ASO.read(5)
85
binData=ASO.Read(1)
86
sConv=Num2Str(ascb(binData),2 ,8)
87
nBits=Str2Num(left(sConv,5),2)
88
sConv=mid(sConv,6)
89
While(len(sConv)<nBits*4)
90
binData=ASO.Read(1)
91
sConv=sConv&Num2Str(AscB(binData),2 ,8)
92
Wend
93
ret(0)="SWF"
94
ret(1)=Int(Abs(Str2Num(Mid(sConv,1*nBits+1,nBits),2)-Str2Num(Mid(sConv,0*nBits+1,nBits),2))/20)
95
ret(2)=Int(Abs(Str2Num(Mid(sConv,3*nBits+1,nBits),2)-Str2Num(Mid(sConv,2*nBits+1,nBits),2))/20)
96
Case "FFD8FF":
97
Do
98
Do: p1=binVal(ASO.Read(1)): Loop While p1=255 And Not ASO.EOS
99
If p1>191 And p1<196 Then Exit Do Else ASO.read(binval2(ASO.Read(2))-2)
100
Do:p1=binVal(ASO.Read(1)):Loop While p1<255 And Not ASO.EOS
101
Loop While True
102
ASO.Read(3)
103
ret(0)="JPG"
104
ret(2)=binval2(ASO.Read(2))
105
ret(1)=binval2(ASO.Read(2))
106
Case Else:
107
If left(Bin2Str(bFlag),2)="BM" Then
108
ASO.Read(15)
109
ret(0)="BMP"
110
ret(1)=binval(ASO.Read(4))
111
ret(2)=binval(ASO.Read(4))
112
Else
113
ret(0)=""
114
End If
115
End Select
116
ret(3)="width=""" & ret(1) &""" height=""" & ret(2) &""""
117
getimagesize=ret
118
End Function
119
120
Public Function imgW(IMGPath)
121
Dim FSO,IMGFile,FileExt,Arr
122
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
123
If (FSO.FileExists(IMGPath)) Then
124
Set IMGFile = FSO.GetFile(IMGPath)
125
FileExt=FSO.GetExtensionName(IMGPath)
126
Select Case FileExt
127
Case "gif","bmp","jpg","png":
128
Arr=GetImageSize(IMGFile.Path)
129
imgW = Arr(1)
130
End Select
131
Set IMGFile=Nothing
132
Else
133
imgW = 0
134
End If
135
Set FSO=Nothing
136
End Function
137
138
Public Function imgH(IMGPath)
139
Dim FSO,IMGFile,FileExt,Arr
140
Set FSO = server.CreateObject("Scripting.FileSystemObject")
141
If (FSO.FileExists(IMGPath)) Then
142
Set IMGFile = FSO.GetFile(IMGPath)
143
FileExt=FSO.GetExtensionName(IMGPath)
144
Select Case FileExt
145
Case "gif","bmp","jpg","png":
146
Arr=getImageSize(IMGFile.Path)
147
imgH = Arr(2)
148
End Select
149
Set IMGFile=Nothing
150
Else
151
imgH = 0
152
End If
153
Set FSO=Nothing
154
End Function
155
End Class
156
157
IMGPath="Test.jpg"
158
159
Set PP = New ImgWHInfo
160
W = PP.imgW(Server.Mappath(IMGPath))
161
H = PP.imgH(Server.Mappath(IMGPath))
162
Set pp = Nothing
163
164
Response.Write("<img src='"&IMGPath&"' border=0><br>宽:"&W&";高:"&H)
165
%>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165