網上有不少生成縮略圖的ASP組件。若你的虛擬空間不支持註冊新組件,可能會感覺自己的網站失色不少。心晴不才,結合網上資源寫了個無組件生成縮略圖程序,僅供參考。
還是先看看基礎部分吧。首先,我們知道在頁面中顯示圖片是如下代碼:
<imgsrc="pic.gif"border="0"width="300"height="260">
src是圖片路徑,border控製圖片邊緣寬度,width是圖片的長度,height是圖片的高度。縮略圖的生成其實就是在原始尺寸上縮放。但一般為了盡量少失真,我們都會按比例縮放。於是,獲取圖片的長寬尺寸也就成了生成縮略圖的重點。
下面便是編寫無組件生成縮略圖的步驟:
1.無組件獲取圖片大小
以前剛學ASP不久時看到過一篇利用ASCII碼實現無組件獲取圖片尺寸的文章。後來試了試,發現在獲取jpg類圖片尺寸時總是不能正確顯示,在網上查了查,居然有不少網站轉載這個程序,但沒有一家指出此程序的缺陷,也就更談不上解決缺陷的辦法了。後來又google了一下,終於找到了一篇介紹利用ADODB.stream獲取圖片尺寸的文章,按其介紹的方法,修改裡面的代碼試了試,效果真的還不錯,現在將其拿出來與大家分享:
利用ADODB.stream獲取圖片尺寸的通用類<%
'////////////GPS:GetPictureSize//////////////
'//////////////利用ADODB.stream獲取圖片尺寸//////////////
'/////////CitedByLeon(心晴)2005年8月11日//////////
ClassGPS
Dimaso
PrivateSubClass_Initialize
Setaso=CreateObject("Adodb.Stream")
aso.Mode=3
aso.Type=1
aso.Open
EndSub
PrivateSubClass_Terminate
setaso=nothing
EndSub
PrivateFunctionBin2Str(Bin)
DimI,Str
ForI=1toLenB(Bin)
clow=MidB(Bin,I,1)
ifAscB(clow)<128then
Str=Str&Chr(ASCB(clow))
Else
I=I+1
ifI<=LenB(Bin)thenStr=Str&Chr(ASCW(MidB(Bin,I,1)&clow))
endIf
Next
Bin2Str=Str
EndFunction
PrivateFunctionNum2Str(num,base,lens)
'GPS(2005-8-11)
dimret
ret=""
while(num>=base)
ret=(nummodbase)&ret
num=(num-nummodbase)/base
wend
Num2Str=right(string(lens,"0")&num&ret,lens)
EndFunction
PrivateFunctionStr2Num(str,base)
'GPS(2005-8-11)
dimret
ret=0
fori=1tolen(str)
ret=ret*base+cint(mid(str,i,1))
next
Str2Num=ret
EndFunction