- <%
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- '::: 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文件信息
延伸 · 阅读
- 2022-03-10Unity3D实现播放gif图功能
- 2022-03-06Python Pillow Image.save 保存为jpg图片压缩问题
- 2022-02-23python对gif图压缩的完美解决方案
- 2022-02-15C语言实现BMP格式图片转化为灰度
- 2022-02-13C语言实现BMP图像闭运算处理
- 2022-02-13C语言实现BMP图像边缘检测处理
精彩推荐
- ASP教程
JScript中遍历Request表单参数集合的方法
这篇文章主要介绍了JScript中遍历Request表单参数集合的方法,本文以遍历Request.QueryString集合为例给出了实现代码,需要的朋友可以参考下...
- ASP教程
asp 标记字符串中指定字符变色不区分大小写
今天遇到这种问题,单纯的使用replace函数不行,他会改变原有的字符串的大小写,在网上找到相关的代码,自己备份下...
- ASP教程
asp Access数据备份,还原,压缩类代码
asp Access数据备份,还原,压缩类实现代码,大家可以参考下。...
- ASP教程
asp 采集实战代码
最近实在是太流行采集了,本人是不喜欢采集的,但对采集的原理我却很有兴趣进行研究,拿到了网上采集常用函数,对其进行了一番研究,并实战,结果...
- ASP教程
asp之基于adodb.stream的文件操作类
asp之基于adodb.stream的文件操作类...
- ASP教程
asp+javascript实现404页的处理转换
asp+javascript实现404页的处理转换...
- ASP教程
ASP常用函数:getpy()
ASP常用函数:getpy()...
- ASP教程
ASP.NET 数据源
数据源 一个 data sourse 控件与数据绑定的控件相互作用,并隐藏了复杂的数据的联编过程。这些是提供数据给 data bound 控件的工具,并且支持如插入,删除...