网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 网站开发-> ASP/ASP.NET-> 利用FSO取得BMP,JPG,PNG,GIF文件信息

利用FSO取得BMP,JPG,PNG,GIF文件信息
作者:佚名 来源:InterNet 加入时间:2005-3-3
相关文章
  • FSO实例
  • 使用FSO把文本信息导入数据库
  • 一个实用的FSO-实时统计在线人数
  • FSO操作示例(给初学者)
  • 如何使用FSO搜索硬盘文件
  • 三种禁用FSO组件的方法
  • FSO的一些特殊功能
  • 使用FSO按文件大小浏览文件目录并进行删除操作
  • NAV导致IIS调用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

    %>


    [文章录入员:nancy]

    相关文章
  • FSO实例
  • 使用FSO把文本信息导入数据库
  • 一个实用的FSO-实时统计在线人数
  • FSO操作示例(给初学者)
  • 如何使用FSO搜索硬盘文件
  • 三种禁用FSO组件的方法
  • FSO的一些特殊功能
  • 使用FSO按文件大小浏览文件目录并进行删除操作
  • NAV导致IIS调用FSO失败的解决方法
  • 构建免受FSO威胁虚拟主机
  • 相关书籍:
    本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    ASP/ASP.NET
    ASP/ASP.NET
    PHP技术
    JSP技术
    XML技术
    CGI/PERL
    WEB服务器
    WordPress专题
    其它
    电脑教程阅读排行
    ·用ASP连接数据库
    ·ASP基础
    ·使用Database Acces...
    ·让网站活起来(1)
    ·创建一个简单的ASP页
    ·创建HTML表格
    ·初学者必读 ASP运行环境的搭建
    ·ASP中FSO的神奇功能
    ·VBScript 基础 使用条件...
    ·VBScript 基础 VBSc...