成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當(dāng)前位置:首頁>>軟件教程>>新聞內(nèi)容  
通過Adodb.Stream取得圖像的高/寬度
作者:thinkeasy 發(fā)布時間:2003-10-24 17:06:38 | 【字體:

上傳圖片或顯示SWF的時候都希望得到它的高度和寬度

基本原理使用Adodb.Stream讀二進(jìn)制文件然后進(jìn)行解析,然后返回一數(shù)組
第一個元素為類型(BMP JPG PNG GIF SWF)
第二個元素為寬度{width}
第三個元素為高度{height}
第四個元素為width={width},height={height}式字符串

Class qswhImg
 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
  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)
  'qiushuiwuhen (2002-8-12)
  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)
  'qiushuiwuhen (2002-8-12)
  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)
  'qiushuiwuhen (2002-8-12)
  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)
  'qiushuiwuhen (2002-8-12)
  dim ret
  ret = 0
  for i = 1 to lenb(bin)
   ret = ret *256 + ascb(midb(bin,i,1))
  next
  BinVal2=ret
 End Function
 
 Function getImageSize(filespec) 
  'qiushuiwuhen (2002-9-3)
  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
End Class

使用范例(讀某目錄下所有圖片的寬度):
 set qswh=new qswhImg

 Set fso = CreateObject("Scripting.FileSystemObject")
 Set f = fso.GetFolder(server.mappath("."))
 Set fc = f.Files
 For Each f1 in fc
  ext=fso.GetExtensionName(f1.path)
  select case ext
  case "gif","bmp","jpg","png":
   arr=qswh.getImageSize(f1.path)
   response.write "<br>" & arr(0) & " " & arr(3) & ":" & f1.name & " width:" & arr(1) & " height:" & arr(2)
  case "swf"
   arr=qswh.getimagesize(f1.path)
   response.write "<br>" & arr(0) & " " & arr(3) & ":" & f1.name & " width:" & arr(1) & " height:" & arr(2)
  end select
  
 Next
 Set fc=nothing
 Set f=nothing
 Set fso=nothing
 Set qswh=nothing


文章來源:CSDN
·關(guān)于Adodb.Stream 的使用說明
 放生
 愚愛
 夠愛
 觸電
 白狐
 葬愛
 光榮
 畫心
 火花
 稻香
 小酒窩
 下雨天
 右手邊
 安靜了
 魔杰座
 你不像她
 邊做邊愛
 擦肩而過
 我的答鈴
 懷念過去
 等一分鐘
 放手去愛
 冰河時代
 你的承諾
 自由飛翔
 原諒我一次
 吻的太逼真
 左眼皮跳跳
 做你的愛人
 一定要愛你
 飛向別人的床
 愛上別人的人
 感動天感動地
 心在跳情在燒
 玫瑰花的葬禮
 有沒有人告訴你
 即使知道要見面
 愛上你是一個錯
 最后一次的溫柔
 愛上你是我的錯
 怎么會狠心傷害我
 不是因?yàn)榧拍畔?/a>
 親愛的那不是愛情
 難道愛一個人有錯
 寂寞的時候說愛我
主站蜘蛛池模板: 兰州市| 延川县| 固始县| 道孚县| 重庆市| 太湖县| 封开县| 施秉县| 清河县| 探索| 钟山县| 达孜县| 布尔津县| 习水县| 榕江县| 洮南市| 日喀则市| 荣昌县| 拉萨市| 夏津县| 诸暨市| 龙山县| 岢岚县| 仙居县| 甘孜县| 绥芬河市| 师宗县| 若尔盖县| 彭阳县| 获嘉县| 峨眉山市| 台北县| 和林格尔县| 海安县| 池州市| 孝昌县| 石狮市| 壤塘县| 广水市| 博野县| 榆树市|