- <%
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- '::: 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
- %>
利用FSO取得BMP,JPG,PNG,GIF文件信息
2019-11-01 12:49asp技术网 ASP教程
利用FSO取得BMP,JPG,PNG,GIF文件信息
延伸 · 阅读
- 2019-11-01FSO+递归生成文件列表(xml)
- 2019-11-01fso的一些特殊功能
- 2019-11-01使用FSO按文件大小浏览文件目录并进行删除操作
- 2019-11-01NAV导致IIS调用FSO失败的解决方法
- 2019-11-01构建免受 FSO 威胁虚拟主机
- 2019-10-31ASP中FSO对象对IIS WEB服务器数据安全的威胁及对策
精彩推荐
- ASP教程
清空iis log 中自己登录ip的vbs
清空iis log 中自己登录ip的vbs...
- ASP教程
ASP常用函数:ArrayToxml
ASP常用函数:ArrayToxml ...
- ASP教程
asp检测是否为中文字符函数
asp检测是否为中文字符函数...
- ASP教程
ASP向Excel导数据(图片)终结版 ASP操作Excel
ASP向Excel导数据(图片)终结版 ASP操作Excel,需要的朋友可以参考下。...
- ASP教程
可用的ASP无重复数字随机函数, 数组实现, 并应用于随机显示记录
经服务器之家站长测试可用的ASP无重复数字随机函数,数组实现,并应用于随机显示记录集 作用: 本函数适用于随机显示小数量的随机不重复数字 本函数适用...
- ASP教程
用VB生成DLL封装ASP连接数据库的代码
这篇文章以VB生成的DLL封装ASP代码来连接数据库(以Access数据库为例)。 ...
- ASP教程
asp实现过滤关键字的函数
asp实现过滤关键字的函数 ...
- ASP教程
asp下的一个很简单的验证码程序
asp下的一个很简单的验证码程序...