·您的位置: 首页 » 资源教程 » 编程开发 » ASP » 利用FSO取得BMP,JPG,PNG,GIF文件信息

利用FSO取得BMP,JPG,PNG,GIF文件信息

类别: ASP教程  评论数:0 总得分:0
<%
  \':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  \':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  \'::: BMP, GIF, JPG and PNG :::
  \':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  \':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  \'::: :::
  \'::: This function gets a specified number of bytes from any :::
  \'::: file, starting at the offset (base 1) :::
  \'::: :::
  \'::: Passed: :::
  \'::: flnm => Filespec of file to read :::
  \'::: offset => Offset at which to start reading :::
  \'::: bytes => How many bytes to read :::
  \'::: :::
  \':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  function GetBytes(flnm, offset, bytes)
  Dim objFSO
  Dim objFTemp
  Dim objTextStream
  Dim lngSize
  on error resume next
  Set objFSO = CreateObject("Scripting.FileSystemObject")

\' First, we get the filesize
  Set objFTemp = objFSO.GetFile(flnm)
  lngSize = objFTemp.Size
  set objFTemp = nothing
  fsoForReading = 1
  Set objTextStream = objFSO.OpenTextFile(flnm, fsoForReading)
  if offset > 0 then
  strBuff = objTextStream.Read(offset - 1)
  end if
  if bytes = -1 then \' Get All!
  GetBytes = objTextStream.Read(lngSize) \'ReadAll
  else
  GetBytes = objTextStream.Read(bytes)
  end if
  objTextStream.Close
  set objTextStream = nothing
  set objFSO = nothing
  end function

\':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  \'::: :::
  \'::: Functions to convert two bytes to a numeric value (long) :::
  \'::: (both little-endian and big-endian) :::
  \'::: :::
  \':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  function lngConvert(strTemp)
  lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * 256)))
  end function
  function lngConvert2(strTemp)
  lngConvert2 = clng(asc(right(strTemp, 1)) + ((asc(left(strTemp, 1)) * 256)))
  end function

\':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  \'::: :::
  \'::: This function does most of the real work. It will attempt :::
  \'::: to read any file, regardless of the extension, and will :::
  \'::: identify if it is a graphical image. :::
  \'::: :::
  \'::: Passed: :::
  \'::: flnm => Filespec of file to read :::
  \'::: width => width of image :::
  \'::: height => height of image :::
  \'::: depth => color depth (in number of colors) :::
  \'::: strImageType=> type of image (e.g. GIF, BMP, etc.) :::
  \'::: :::
  \':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  function gfxSpex(flnm, width, height, depth, strImageType)
  dim strPNG
  dim strGIF
  dim strBMP
  dim strType
  strType = ""
  strImageType = "(unknown)"
  gfxSpex = False
  strPNG = chr(137) & chr(80) & chr(78)
  strGIF = "GIF"
  strBMP = chr(66) & chr(77)
  strType = GetBytes(flnm, 0, 3)
  if strType = strGIF then \' is GIF
  strImageType = "GIF"
  Width = lngConvert(GetBytes(flnm, 7, 2))
  Height = lngConvert(GetBytes(flnm, 9, 2))
  Depth = 2 ^ ((asc(GetBytes(flnm, 11, 1)) and 7) + 1)
  gfxSpex = True
  elseif left(strType, 2) = strBMP then \' is BMP
  strImageType = "BMP"
  Width = lngConvert(GetBytes(flnm, 19, 2))
  Height = lngConvert(GetBytes(flnm, 23, 2))
  Depth = 2 ^ (asc(GetBytes(flnm, 29, 1)))
  gfxSpex = True
  elseif strType = strPNG then \' Is PNG
  strImageType = "PNG"
  Width = lngConvert2(GetBytes(flnm, 19, 2))
  Height = lngConvert2(GetBytes(flnm, 23, 2))
  Depth = getBytes(flnm, 25, 2)
  select case asc(right(Depth,1))
  case 0
  Depth = 2 ^ (asc(left(Depth, 1)))
  gfxSpex = True
  case 2
  Depth = 2 ^ (asc(left(Depth, 1)) * 3)
  gfxSpex = True
  case 3
  Depth = 2 ^ (asc(left(Depth, 1))) \'8
  gfxSpex = True
  case 4
  Depth = 2 ^ (asc(left(Depth, 1)) * 2)
  gfxSpex = True
  case 6
  Depth = 2 ^ (asc(left(Depth, 1)) * 4)
  gfxSpex = True
  case else
  Depth = -1
  end select

else
  strBuff = GetBytes(flnm, 0, -1) \' Get all bytes from file
  lngSize = len(strBuff)
  flgFound = 0
  strTarget = chr(255) & chr(216) & chr(255)
  flgFound = instr(strBuff, strTarget)
  if flgFound = 0 then
  exit function
  end if
  strImageType = "JPG"
  lngPos = flgFound + 2
  ExitLoop = false
  do while ExitLoop = False and lngPos < lngSize

do while asc(mid(strBuff, lngPos, 1)) = 255 and lngPos < lngSize
  lngPos = lngPos + 1
  loop
  if asc(mid(strBuff, lngPos, 1)) < 192 or asc(mid(strBuff, lngPos, 1)) > 195 then
  lngMarkerSize = lngConvert2(mid(strBuff, lngPos + 1, 2))
  lngPos = lngPos + lngMarkerSize + 1
  else
  ExitLoop = True
  end if
  loop
  \'
  if ExitLoop = False then
  Width = -1
  Height = -1
  Depth = -1
  else
  Height = lngConvert2(mid(strBuff, lngPos + 4, 2))
  Width = lngConvert2(mid(strBuff, lngPos + 6, 2))
  Depth = 2 ^ (asc(mid(strBuff, lngPos + 8, 1)) * 8)
  gfxSpex = True
  end if

end if
  end function

\':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  \'::: Test Harness :::
  \':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

\' To test, we\'ll just try to show all files with a .GIF extension in the root of C:
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objF = objFSO.GetFolder("c:")
  Set objFC = objF.Files
  response.write "<table border=""0"" cellpadding=""5"">"
  For Each f1 in objFC
  if instr(ucase(f1.Name), ".GIF") then
  response.write "<tr><td>" & f1.name & "</td><td>" & f1.DateCreated & "</td><td>" & f1.Size & "</td><td>"
  if gfxSpex(f1.Path, w, h, c, strType) = true then
  response.write w & " x " & h & " " & c & " colors"
  else
  response.write " "
  end if
  response.write "</td></tr>"
  end if
  Next
  response.write "</table>"
  set objFC = nothing
  set objF = nothing
  set objFSO = nothing
  %>
-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1