本文主要是介绍利用ASP获取设置图片尺寸大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
< %
imgpath = " default_22.gif "
response.write " <img src=' " & imgpath & " ' border=0 " & SetAutoImg( 280 , 260 ,imgpath) & " ><br>宽: " & GetImgW(ImgPath) & " ;高: " & GetImgH(ImgPath)
function GetImgW(ImgPath)
set pp = new imgInfo
w = pp.imgW(server.mappath(ImgPath))
set pp = nothing
GetImgW = w
end function
function GetImgH(ImgPath)
set pp = new imgInfo
h = pp.imgH(server.mappath(ImgPath))
set pp = nothing
GetImgH = h
end function
function SetAutoImg(fitWidth,fitHeight,ImgPath)
hhRtn = 0
wwRtn = 0
set pp = new imgInfo
ww = pp.imgW(server.mappath(ImgPath))
hh = pp.imgH(server.mappath(ImgPath))
set pp = nothing
if ww > 0 and hh > 0 then
if ww / hh >= FitWidth / FitHeight then
wwRtn = fitWidth
hhRtn = (hh * FitWidth) / ww
else
hhRtn = fitHeight
wwRtn = (ww * FitHeight) / hh
end if
end if
SetAutoImg = " height=' " & hhRtn & " ' " & " width=' " & wwRtn & " ' "
end function
class imgInfo
dim aso
Private Sub Class_Initialize
set aso = CreateObject ( " Adodb.Stream " )
aso.Mode = 3
aso.Type = 1
aso.Open
End Sub
Private Sub Class_Terminate
err.clear
set aso = nothing
End Sub
Private Function Bin2Str(Bin)
Dim I, Str
For I = 1 to LenB(Bin)
clow = MidB(Bin,I, 1 )
if ASCB(clow) < 128 then
Str = Str & Chr (ASCB(clow))
else
I = I + 1
if I <= LenB(Bin) then Str = Str & Chr (ASCW(MidB(Bin,I, 1 ) & clow))
end if
Next
Bin2Str = Str
End Function
Private Function Num2Str(num,base,lens)
dim ret
ret = ""
while (num >= base)
ret = (num mod base) & ret
num = (num - num mod base) / base
wend
Num2Str = right ( string (lens, " 0 " ) & num & ret,lens)
End Function
Private Function Str2Num(str,base)
dim ret
ret = 0
for i = 1 to len (str)
ret = ret * base + cint ( mid (str,i, 1 ))
next
Str2Num = ret
End Function
Private Function BinVal(bin)
dim ret
ret = 0
for i = lenb(bin) to 1 step - 1
ret = ret * 256 + ascb(midb(bin,i, 1 ))
next
BinVal = ret
End Function
Private Function BinVal2(bin)
dim ret
ret = 0
for i = 1 to lenb(bin)
ret = ret * 256 + ascb(midb(bin,i, 1 ))
next
BinVal2 = ret
End Function
Private Function getImageSize(filespec)
dim ret( 3 )
aso.LoadFromFile(filespec)
bFlag = aso.read( 3 )
select case hex (binVal(bFlag))
case " 4E5089 " :
aso.read( 15 )
ret( 0 ) = " PNG "
ret( 1 ) = BinVal2(aso.read( 2 ))
aso.read( 2 )
ret( 2 ) = BinVal2(aso.read( 2 ))
case " 464947 " :
aso.read( 3 )
ret( 0 ) = " GIF "
ret( 1 ) = BinVal(aso.read( 2 ))
ret( 2 ) = BinVal(aso.read( 2 ))
case " 535746 " :
aso.read( 5 )
binData = aso.Read( 1 )
sConv = Num2Str(ascb(binData), 2 , 8 )
nBits = Str2Num( left (sConv, 5 ), 2 )
sConv = mid (sConv, 6 )
while ( len (sConv) < nBits * 4 )
binData = aso.Read( 1 )
sConv = sConv & Num2Str(ascb(binData), 2 , 8 )
wend
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 )
case " FFD8FF " :
do
do : p1 = binVal(aso.Read( 1 )): loop while p1 = 255 and not aso.EOS
if p1 > 191 and p1 < 196 then exit do else aso.read(binval2(aso.Read( 2 )) - 2 )
do :p1 = binVal(aso.Read( 1 )): loop while p1 < 255 and not aso.EOS
loop while true
aso.Read( 3 )
ret( 0 ) = " JPG "
ret( 2 ) = binval2(aso.Read( 2 ))
ret( 1 ) = binval2(aso.Read( 2 ))
case else :
if left (Bin2Str(bFlag), 2 ) = " BM " then
aso.Read( 15 )
ret( 0 ) = " BMP "
ret( 1 ) = binval(aso.Read( 4 ))
ret( 2 ) = binval(aso.Read( 4 ))
else
ret( 0 ) = ""
end if
end select
ret( 3 ) = " width="" " & ret( 1 ) & " "" height="" " & ret( 2 ) & " "" "
getimagesize = ret
End Function
Public Function imgW(pic_path)
Set fso1 = server.CreateObject( " Scripting.FileSystemObject " )
If (fso1.FileExists(pic_path)) Then
Set f1 = fso1.GetFile(pic_path)
ext = fso1.GetExtensionName(pic_path)
select case ext
case " gif " , " bmp " , " jpg " , " png " :
arr = getImageSize(f1.path)
imgW = arr( 1 )
end select
Set f1 = nothing
else
imgW = 0
End if
Set fso1 = nothing
End Function
Public Function imgH(pic_path)
Set fso1 = server.CreateObject( " Scripting.FileSystemObject " )
If (fso1.FileExists(pic_path)) Then
Set f1 = fso1.GetFile(pic_path)
ext = fso1.GetExtensionName(pic_path)
select case ext
case " gif " , " bmp " , " jpg " , " png " :
arr = getImageSize(f1.path)
imgH = arr( 2 )
end select
Set f1 = nothing
else
imgH = 0
End if
Set fso1 = nothing
End Function
End Class
% >
imgpath = " default_22.gif "
response.write " <img src=' " & imgpath & " ' border=0 " & SetAutoImg( 280 , 260 ,imgpath) & " ><br>宽: " & GetImgW(ImgPath) & " ;高: " & GetImgH(ImgPath)
function GetImgW(ImgPath)
set pp = new imgInfo
w = pp.imgW(server.mappath(ImgPath))
set pp = nothing
GetImgW = w
end function
function GetImgH(ImgPath)
set pp = new imgInfo
h = pp.imgH(server.mappath(ImgPath))
set pp = nothing
GetImgH = h
end function
function SetAutoImg(fitWidth,fitHeight,ImgPath)
hhRtn = 0
wwRtn = 0
set pp = new imgInfo
ww = pp.imgW(server.mappath(ImgPath))
hh = pp.imgH(server.mappath(ImgPath))
set pp = nothing
if ww > 0 and hh > 0 then
if ww / hh >= FitWidth / FitHeight then
wwRtn = fitWidth
hhRtn = (hh * FitWidth) / ww
else
hhRtn = fitHeight
wwRtn = (ww * FitHeight) / hh
end if
end if
SetAutoImg = " height=' " & hhRtn & " ' " & " width=' " & wwRtn & " ' "
end function
class imgInfo
dim aso
Private Sub Class_Initialize
set aso = CreateObject ( " Adodb.Stream " )
aso.Mode = 3
aso.Type = 1
aso.Open
End Sub
Private Sub Class_Terminate
err.clear
set aso = nothing
End Sub
Private Function Bin2Str(Bin)
Dim I, Str
For I = 1 to LenB(Bin)
clow = MidB(Bin,I, 1 )
if ASCB(clow) < 128 then
Str = Str & Chr (ASCB(clow))
else
I = I + 1
if I <= LenB(Bin) then Str = Str & Chr (ASCW(MidB(Bin,I, 1 ) & clow))
end if
Next
Bin2Str = Str
End Function
Private Function Num2Str(num,base,lens)
dim ret
ret = ""
while (num >= base)
ret = (num mod base) & ret
num = (num - num mod base) / base
wend
Num2Str = right ( string (lens, " 0 " ) & num & ret,lens)
End Function
Private Function Str2Num(str,base)
dim ret
ret = 0
for i = 1 to len (str)
ret = ret * base + cint ( mid (str,i, 1 ))
next
Str2Num = ret
End Function
Private Function BinVal(bin)
dim ret
ret = 0
for i = lenb(bin) to 1 step - 1
ret = ret * 256 + ascb(midb(bin,i, 1 ))
next
BinVal = ret
End Function
Private Function BinVal2(bin)
dim ret
ret = 0
for i = 1 to lenb(bin)
ret = ret * 256 + ascb(midb(bin,i, 1 ))
next
BinVal2 = ret
End Function
Private Function getImageSize(filespec)
dim ret( 3 )
aso.LoadFromFile(filespec)
bFlag = aso.read( 3 )
select case hex (binVal(bFlag))
case " 4E5089 " :
aso.read( 15 )
ret( 0 ) = " PNG "
ret( 1 ) = BinVal2(aso.read( 2 ))
aso.read( 2 )
ret( 2 ) = BinVal2(aso.read( 2 ))
case " 464947 " :
aso.read( 3 )
ret( 0 ) = " GIF "
ret( 1 ) = BinVal(aso.read( 2 ))
ret( 2 ) = BinVal(aso.read( 2 ))
case " 535746 " :
aso.read( 5 )
binData = aso.Read( 1 )
sConv = Num2Str(ascb(binData), 2 , 8 )
nBits = Str2Num( left (sConv, 5 ), 2 )
sConv = mid (sConv, 6 )
while ( len (sConv) < nBits * 4 )
binData = aso.Read( 1 )
sConv = sConv & Num2Str(ascb(binData), 2 , 8 )
wend
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 )
case " FFD8FF " :
do
do : p1 = binVal(aso.Read( 1 )): loop while p1 = 255 and not aso.EOS
if p1 > 191 and p1 < 196 then exit do else aso.read(binval2(aso.Read( 2 )) - 2 )
do :p1 = binVal(aso.Read( 1 )): loop while p1 < 255 and not aso.EOS
loop while true
aso.Read( 3 )
ret( 0 ) = " JPG "
ret( 2 ) = binval2(aso.Read( 2 ))
ret( 1 ) = binval2(aso.Read( 2 ))
case else :
if left (Bin2Str(bFlag), 2 ) = " BM " then
aso.Read( 15 )
ret( 0 ) = " BMP "
ret( 1 ) = binval(aso.Read( 4 ))
ret( 2 ) = binval(aso.Read( 4 ))
else
ret( 0 ) = ""
end if
end select
ret( 3 ) = " width="" " & ret( 1 ) & " "" height="" " & ret( 2 ) & " "" "
getimagesize = ret
End Function
Public Function imgW(pic_path)
Set fso1 = server.CreateObject( " Scripting.FileSystemObject " )
If (fso1.FileExists(pic_path)) Then
Set f1 = fso1.GetFile(pic_path)
ext = fso1.GetExtensionName(pic_path)
select case ext
case " gif " , " bmp " , " jpg " , " png " :
arr = getImageSize(f1.path)
imgW = arr( 1 )
end select
Set f1 = nothing
else
imgW = 0
End if
Set fso1 = nothing
End Function
Public Function imgH(pic_path)
Set fso1 = server.CreateObject( " Scripting.FileSystemObject " )
If (fso1.FileExists(pic_path)) Then
Set f1 = fso1.GetFile(pic_path)
ext = fso1.GetExtensionName(pic_path)
select case ext
case " gif " , " bmp " , " jpg " , " png " :
arr = getImageSize(f1.path)
imgH = arr( 2 )
end select
Set f1 = nothing
else
imgH = 0
End if
Set fso1 = nothing
End Function
End Class
% >
这篇关于利用ASP获取设置图片尺寸大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!