- <%
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- ':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- '::: 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教程
ASP常用函数:HTMLDecode
ASP常用函数:HTMLDecode ...
- ASP教程
ASP GetRef 函数指针试探
近日在学习C++,看到函数指针,由于之前一直搞ASP,所以想ASP里面是否也有这个函数指针的东西,百度了一下,没有太多关于此方面的介绍,于是翻了翻...
- ASP教程
asp删除mssql数据库中没有记录的图片代码
asp删除没有记录的图片需要文件夹(存放图片的文件夹)中的每个图片和数据库中的所有记录进行比较...
- ASP教程
ASP实现文件上传的方法
在基于浏览器/服务器的应用环境中,在浏览器中上传各种类型的文件一直是困扰用户文件管理应用的难题之一。常用的实现方法是利用在RFC1867中引入的一...
- ASP教程
asp读取远程文件并保存到本地代码
asp读取远程文件并保存到本地代码 ...
- ASP教程
asp中一段防SQL注入的通用脚本
asp中一段防SQL注入的通用脚本...
- ASP教程
ASP 判断是否有中文的代码
其实我上一篇写的js判断中文才是最好的方法,这个是asp的一种,只要是双字节都是当作中文判断...
- ASP教程
字符批量替换程序asp服务器版
字符批量替换程序asp服务器版,安装方法:直接把replace.asp文件放在任意的支持asp+FSO的环境中 ...