利用FSO取得BMP,JPG,PNG,GIF文件信息
<%
’:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
’:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
’::: 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专题--清空iislog中自己登录ip的vbs 2006-2-28
- FSO专题--在ASP中使用FSO组件生成HTML页面 2006-2-28
- FSO专题--fso的一些特殊功能2006-2-28
- FSO专题--ASP中FSO的神奇功能-简介 2006-2-28
- FSO专题--巧用FileSystem组件实现WEB应用中的本地特定打印[图]2006-2-28
- FSO专题--利用FSO取得BMP,JPG,PNG,GIF文件信息 2006-2-28
- FSO专题--ASP中FSO的神奇功能-权限许可 2006-2-28
- asp学习入门经验谈 2006-2-28
- ASP中FSO的神奇功能-使用FSO进行文件搜索 2006-2-28
- FSO专题-- ASP中FSO的神奇功能-用FSO进行内容管理 2006-2-28
![清风楼书(一)[图]--平面广告](http://www.fansart.com/uploadfile/200642868655905.gif)
清风楼书(一)
![painter超级可爱的上色过程(韩国)[图]--CG插画](http://www.fansart.com/uploadfile/200641150378565.jpg)
painter超级可爱的上色过程(韩国)
![古典楼书(精品欣赏)(1)[图]--平面广告](http://www.fansart.com/uploadfile/200641153842877.jpg)
古典楼书(精品欣赏)(1)
![美国插画师kevindart作品(1)[图]--CG插画](http://www.fansart.com/uploadfile/200641156499109.jpg)
美国插画师kevindart作品(1)
![美国插画师kevindart作品[图]--CG插画](http://www.fansart.com/uploadfile/200641156355093.jpg)
美国插画师kevindart作品

荷兰著名画家Anton Pieck插画
![非常可爱的儿童插画(1)[图]--CG插画](http://www.fansart.com/uploadfile/200641157447221.jpg)
非常可爱的儿童插画(1)
![回忆紫禁城里那些逝去的[图]--中国艺术](http://www.fansart.com/uploadfile/200641159463469.jpg)
回忆紫禁城里那些逝去的
![国粹京剧脸谱表情[图]--界面设计](http://www.fansart.com/uploadfile/200641164370797.jpg)
国粹京剧脸谱表情
![高傲的玫瑰-温碧霞[图]--摄影艺术](http://www.fansart.com/uploadfile/200641232299455.jpg)
高傲的玫瑰-温碧霞
![北邦插画欣赏(1)[图]--CG插画](http://www.fansart.com/uploadfile/200641335800545.jpg)
北邦插画欣赏(1)
![yashasi插画作品欣赏[图]--CG插画](http://www.fansart.com/uploadfile/200641366906025.jpg)
yashasi插画作品欣赏
![cg插画欣赏[图]--CG插画](http://www.fansart.com/uploadfile/200641433658593.jpg)
cg插画欣赏
![溯源居广告欣赏--小红人[图]--平面广告](http://www.fansart.com/uploadfile/200641453136345.jpg)
溯源居广告欣赏--小红人
![房地产广告设计-之水墨风格1[图]--平面广告](http://www.fansart.com/uploadfile/200641457308753.jpg)
房地产广告设计-之水墨风格1
![泊林花园推广故事绘本(1)[图]--CG插画](http://www.fansart.com/uploadfile/200642041664949.jpg)
泊林花园推广故事绘本(1)
![泊林花园推广故事绘本(2)[图]--CG插画](http://www.fansart.com/uploadfile/200642042197577.jpg)
泊林花园推广故事绘本(2)
![万科西山庭院.格.沉.尊[图]--平面广告](http://www.fansart.com/uploadfile/200642133015939.jpg)
万科西山庭院.格.沉.尊
![2006夏日流行时尚,创意无限街头华丽[图]--时装魅影](http://www.fansart.com/uploadfile/200642261089093.jpg)
2006夏日流行时尚,创意无限街头华丽
![水木清华地产广告欣赏[图]--平面广告](http://www.fansart.com/uploadfile/200642634295921.jpg)
水木清华地产广告欣赏