|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况;缩略图|无组件起首,我们晓得在页面中显现图片是以下代码: <imgsrc="http://www.163design.net/a/f/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
PrivateFunctionBinVal(bin)
GPS(2002-8-11)
dimret
ret=0
fori=lenb(bin)to1step-1
ret=ret*256+ascb(midb(bin,i,1))
next
BinVal=ret
EndFunction
PrivateFunctionBinVal2(bin)
GPS(2002-8-11)
dimret
ret=0
fori=1tolenb(bin)
ret=ret*256+ascb(midb(bin,i,1))
next
BinVal2=ret
EndFunction
///以下是挪用代码///
FunctiongetImageSize(filespec)
GPS(2002-8-11)
dimret(3)
aso.LoadFromFile(filespec)
bFlag=aso.read(3)
selectcasehex(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)):loopwhilep1=255andnotaso.EOS
ifp1>191andp1<196thenexitdoelseaso.read(binval2(aso.Read(2))-2)
do:p1=binVal(aso.Read(1)):loopwhilep1<255andnotaso.EOS
loopwhiletrue
aso.Read(3)
ret(0)="JPG"
ret(2)=binval2(aso.Read(2))
ret(1)=binval2(aso.Read(2))
caseelse:
ifleft(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)=""
endif
endselect
ret(3)="width="""&ret(1)&"""height="""
&ret(2)&""""
getimagesize=ret
EndFunction
EndClass
%>
将以上代码复制天生GPS.asp文件,如许无组件猎取图片尺寸的通用类就OK了。
</p>因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQLServer还有更多的扩展,可以用存储过程,数据库大小无极限限制。 |
|