Tutorials to .com

Tutorials to .com » Asp » Fso » FSO to obtain the image file with the information (size, width, height)

FSO to obtain the image file with the information (size, width, height)

Print View , by: iSee ,Total views: 19 ,Word Count: 895 ,Date: Thu, 16 Apr 2009 Time: 4:51 AM

<%
'':::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::
'':::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::
''::: 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 (eg 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)) [AutoPage]
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

%>


ASP File System Object Articles


Can't Find What You're Looking For?


Rating: Not yet rated

Comments

No comments posted.