用FSO获得图片文件的信息(宽,高,大小)
564
2012-12-13

BMP,GIF,JPG和PNG 


:::  
“:::这个函数获取指定的任何::: 的字节数  
,开始的偏移量(基数为1):::  
“::::::  
“ ::合格::::  
“::: flnm =>文件规范的文件的阅读:::  
“:::偏移=>偏移开始阅读:::  
“:::字节=>有多少要读取的字节:::  
“::::::  
“:::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::  
功能则GetBytes(flnm,偏移,字节)在  
昏暗的objFSO  
昏暗的objFTemp  
昏暗的objTextStream  
昏暗的lngSize  
错误恢复下  
设置objFSO = CREATEOBJECT(“Scripting.FileSystemObject的”) 

“ 第一,我们得到的文件大小  
设置objFTemp = objFSO.GetFile(flnm)  
lngSize = objFTemp.Size  
集objFTemp =没有  
fsoForReading = 1  
设置objTextStream = objFSO.OpenTextFile (flnm,fsoForReading)  
如果偏移> 0,则  
strBuff = objTextStream.Read (偏移- 1)  

字节= -1,那么“获取所有!  
GetBytes会objTextStream.Read(lngSize)“的ReadAll  
其他  
则GetBytes = objTextStream.Read (字节)  
结束,如果  
objTextStream.Close  
集objTextStream =没有  
设置objFSO =没有  
结束功能  
“:::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::  
“::::::  
“:::功能转换成两个字节的数值(长):::  
“:::(little-endian和big-endian的):::  
“::::::  
“::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::“  
功能lngConvert(strTemp)  
lngConvert的CLNG(ASC(左(strTemp 1))+((ASC(右(strTemp 1))* 256)))  
端功能  
功能lngConvert2( strTemp)  
lngConvert2 CLNG(ASC(右(strTemp 1))+((ASC(左(strTemp 1))* 256)))  
端功能  

“:::::::::::::: :::::::::::::::::::::::::::::::::::::::::::::::::: :::  
“::::::  
“:::这个函数做的实际工作。它将尝试:::  
'' :::读取任何文件,无论扩展名,并且将:::  
'' :::识别如果它是一个图形图像。:::  
“::::::  
“:::合格::::  
“::: flnm =>文件规范的文件的阅读:::  
“:::宽度=>宽度的图像:: :  
“:::高度=>图像高度:::  
“:::深入=>颜色深度(颜色数):::  
“::: strImageType =>类型的图像(如GIF,BMP等):::  
'' ::::::  
'' ::::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::  
功能gfxSpex(flnm,宽度,高度,深度,strImageType)  
昏暗的strPNG  
暗淡strGIF  
暗淡strBMP  
strType  
strType =“”  
strImageType =“(未知)”  
gfxSpex = FALSE  
strPNG = CHR(137)CHR(80)CHR(78)  
strGIF =“GIF”  
strBMP = CHR(66)CHR(77 )  
strType = GetBytes会(flnm,0,3)  
= strGIF那么“GIF  
strImageType =“GIF”  
宽= lngConvert(GetBytes会(flnm,7,2))  
高度= lngConvert(GetBytes会(flnm,9,2) )  
深度= 2 ^((ASC(GetBytes会(flnm,11,1))和7)+ 1)  
gfxSpex = TRUE  
ELSEIF左(strType 2)= strBMP那么“和BMP  
strImageType =“BMP”  
宽度= lngConvert( GetBytes会(flnm,19,2))  
高度)= lngConvert(GetBytes会(flnm,23,2)  
= 2 ^(ASC(GetBytes会(flnm,29,1)))  
gfxSpex =  
ELSEIF strType = strPNG,然后“ PNG  
strImageType =“PNG”  
(flnm,19,2)= lngConvert2(GetBytes会)宽度  


1))  
的情况下0  
深度= 2 ^(ASC(左(深度,1)))  
gfxSpex =真正的  
情况下,2  
深度= 2 ^(ASC(左(深度,1))* 3)  
gfxSpex =真正的  
情况下,3  
深度= 2 ^(ASC(左(深度,1)))“8  
gfxSpex =真正的  
情况下,4  
深度= 2 ^(ASC(左(深度,1))* 2)  
gfxSpex =  
6  
深度= 2 ^(ASC(左(深度,1))* 4)  
gfxSpex =真正的  
情况下,其他  
深度= -1  
结束选择  

其他  
strBuff =的的则GetBytes(flnm,0,-1)“的所有字节文件  
lngSize = LEN(strBuff)  
flgFound = 0  
strTarget = CHR(255)&CHR(216)&CHR(255)  
flgFound = INSTR(strBuff,strTarget)  
= 0,则  
退出函数  
结束  
strImageType =“JPG”  
lngPos的flgFound + 2  
ExitLoop = FALSE  
而ExitLoop = FALSE lngPos <lngSize  

递增(中“(strBuff,lngPos,1))= 255,lngPos lngSize  
lngPos = lngPos + 1  
循环  
递增(中“(strBuff,lngPos,1))<192或ASC(中(strBuff,lngPos ,1))> 195,然后  
lngMarkerSize lngConvert2(MID(strBuff,lngPos + 1,2))  
lngPos = lngPos + lngMarkerSize + 1  
其他  
ExitLoop =真正的  
结束,如果  
环路  
“  
ExitLoop = FALSE,则  
宽度= -1  
身高= - 1  
深度= -1  
别人的  
高度= lngConvert2(中期)(strBuff,lngPos + 4,2)  
= lngConvert2(中)(strBuff,lngPos + 6,2)  
= 2 ^(ASC(MID(strBuff,lngPos + 8 ,1))* 8)  
gfxSpex =真正的  
结束,如果  

结束如果  
结束功能  

“:::::::::::::::::::::::::::::::: :::::::::::::::::::::::::::::::::::::  
“:::测试工具:::  
“ :::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::  

“测试,我们将只显示所有文件在C的根目录下一个扩展名为。GIF:  
设置objFSO = CREATEOBJECT(“ Scripting.FileSystemObject的“)  
objF = objFSO.GetFolder(“C:\”)  
设置objFC = objF.Files  
的Response.Write“<table border=""0"" cellpadding=""5"">”  
对于每个F1 objFC  
如果INSTR(UCASE(f1.Name)的“GIF”)  
的Response.Write“文章快照”和f1.name&“</ TD> <TD>”f1.DateCreated&“</ TD> <TD>“和f1.Size&”</ TD> <TD>“  
如果gfxSpex(f1.Path,W,H,C,strType)= true,则  
回复于W&“”&H&“ “&C”颜色“  
其他  
的Response.Write“  
结束如果  


下一步  
的Response.Write“</ TABLE>”  
集objFC =没有  
设置objF =无  
objFSO =什么  
%>