利用FSO取得图像文件信息_FSO专题

<%

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

'::: 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

%>

(原作者:大洲)

时间: 2024-10-26 08:00:25

利用FSO取得图像文件信息_FSO专题的相关文章

利用FSO取得图像文件信息

fso <%':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'::: BMP, GIF, JPG and PNG :::':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::':::::::::

利用FSO取得BMP,JPG,PNG,GIF文件信息_FSO专题

<% '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: '::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: '::: BMP, GIF, JPG and PNG ::: '::::原作:junyd::::::::::: ':::::翻译:欧阳东杰::::::::::::::::::::::::::::::::::::::::

ASP中FSO的神奇功能 - FSO不能做到的_FSO专题

作 者 : 甘冀平 ; FSO确实存在一些弱点 - 比如,它很难处理二进制文件,这包括Word文档.许多图形格式的文件和其他一些文件.然而你仍然可以用其他的方式操作这些文件 - 移动它们.删除它们,等等.你不能做的就是对它们进行打开或者写操作. 另外一个限制是对于文件长度的问题.当立刻读写一些内容时,所有的信息都存储在内存中 - 内容越多,消耗的内存就越大.这将使每个工作都变得慢起来.所以,如果需要操作非常大的文件,或者大量的小文件时,考虑将文件分割成小块,并且经常的清除内存.将应用程序融入进C

fso的一些特殊功能_FSO专题

下面列举一下这些不常用但是却非常酷的功能: 很少被了解的FSO功能 GetSpecialFolder Method 返回特定的Windows文件夹的路径: Windows安装目录:Windows系统目录:Windows临时目录 FSO.GetSpecialFolder([0, 1, or 2]) GetTempName Method 返回一个随机产生的文件或者目录名字,用于需要存储临时数据时 GetAbsolutePathName Method 返回文件夹的绝对路径(类似于Server.MapP

ASP中FSO的神奇功能 - 用FSO进行内容管理_FSO专题

作 者 : 甘冀平 到此,你对FSO可能已经有了很好的体会.让我们再深入研究一步,来解决更复杂的难题. 首先,你可能希望对文件改名.为了跟踪所有的文档,你将要重新命名它们以便唯一,这样就可以被系统容易地区 别.很不幸,FSO不允许简单的文件改名操作,所以我们不得不修改一下. < % ' create the fso object set fso = Server.Createobject("Scripting.FileSystemObject") path = "c:

FSO的强大功能_FSO专题

复制代码 代码如下: <HTML>  <HEAD>  <TITLE>笨狼代码大管家</TITLE>  <meta http-equiv="Content-Type" content="text/html; charset=gb2312"><style>  body  {  font-size:12;  BACKGROUND: #DADADA;  margin-left:5;  }  .folde

用ASP+FSO生成JS文件_FSO专题

复制代码 代码如下: <!--#include file="conn.asp"-->  <%  set js = server.CreateObject("ADODB.RecordSet")  sql="select top 10 * from article order by id desc"  set js = conn.Execute (Sql)  do while not js.eof      title=js(&qu

asp(vbs)fso OpenTextFile方法参数说明_FSO专题

OpenTextFile是asp语言中的一个方法 打开指定的文件并返回一个 TextStream 对象,可以通过这个对象对文件进行读.写或追加. object.OpenTextFile(filename[, iomode[, create[, format]]]) 1.方法编辑打开指定的文件并返回一个 TextStream 对象,可以通过这个对象对文件进行读.写或追加.object.OpenTextFile(filename[, iomode[, create[, format]]])2.参数编

FSO 读出TXT文件_FSO专题

<!--#include file="dbconn.asp"--> <% function ReadFile(filename) on error resume next err.clear 'ASP的一种校错方法 Const ForReading = 2 Const Create = false Dim FSO DIM TS DIM filepath DIM thefile Dim content '---------------操作地址 Set FSO=serve