<\/script>')

利用ASP得到圖片尺寸大小

穩萊

利用ASP得到圖片尺寸大小

<%
imgpath="default_22.gif"

 set  pp=new  imgInfo
 w = pp.imgW(server.mappath(imgpath))
 h = pp.imgH(server.mappath(imgpath))
 set pp=nothing

response.write "<img src='"&imgpath&"' border=0><br>寬:"&w&";高:"&h


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
%>

演示:http://goaler.xicp.net//Doc/Demo/imgwidth/index.asp

 

 給當前日誌評分:
Loading Vote
正在讀取評分資料...


文章來自: Tank部落格
引用通告: 查看所有引用 | 我要引用此文章
Tags:
相關日誌:

評論: 0 | 引用: 0 | 查看次數: -
發表評論
暱 稱:
密 碼: 遊客發言不需要密碼.
內 容:
驗證碼: 驗證碼
選 項:
雖然發表評論不用註冊,但是為了保護您的發言權,建議您註冊帳號.