您的位置:首页 > 其它

用FSO获得图片文件的信息(大小,宽,高)

2014-05-08 16:11 302 查看
<% 
''::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
''::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
''::: 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,1)) 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: