《拓文asp.net网站内容管理系统》官方演示站。
 设为首页  
 收藏本站
 作者:黄振安
 QQ:53854651
首 页 开源拓文.NET编程网站编程网页设计图形图像数据库软件工程留言本
    站内搜索:  
您现在的位置: 拓文网络 → 网站编程 → ASP → ASP中取得图片宽度和高度的类(无组件)[正文]

热 门 文 章

相 关 文 章
  • ASP.NET性能优化
  • ASP脚本循环语句
  • 在.NET框架应用程序中发送电子邮件
  • .net打包自动安装数据库
  • asp.net开发wap必备:更好的匹配手机设备
  • 用ashx动态生成文件
  • windows 2003下asp.Net站点无法使用用户名+密码的方
  • ASP.NET中17种正则表达式
  • 提高ASP.Net应用程序性能的十大方法
  • 一个通过web.Mail发送邮件的类
  • ASP中取得图片宽度和高度的类(无组件)
     
    [作者:不详    转贴自:不详    点击数:    更新时间:2006-3-13 8:53:54]

    <%
    Class ImgWHInfo '获取图片宽度和高度的类,支持JPG,GIF,PNG,BMP
        Dim ASO
        Private Sub Class_Initialize
            Set ASO=Server.CreateObject("ADODB.Stream")
            ASO.Mode=3
            ASO.Type=1
            ASO.Open
        End Sub
        Private Sub Class_Terminate
            Err.Clear
            Set ASO=Nothing
        End Sub
     
        Private Function Bin2Str(Bin)
            Dim I, Str
            For I=1 To LenB(Bin)
                clow=MidB(Bin,I,1)
                If ASCB(clow)<128 Then
                    Str = Str & Chr(ASCB(clow))
                Else
                    I=I+1
                    If I <= LenB(Bin) Then Str = Str & Chr(ASCW(MidB(Bin,I,1)&clow))
                End If
            Next
            Bin2Str = Str
        End Function
         
        Private Function Num2Str(Num,Base,Lens)
            Dim Ret
            Ret = ""
            While(Num>=Base)
                Ret = (Num Mod Base) & Ret
                Num = (Num - Num Mod Base)/Base
            Wend
            Num2Str = Right(String(Lens,"0") & Num & Ret,Lens)
        End Function
         
        Private Function Str2Num(Str,Base)
            Dim Ret,I
            Ret = 0
            For I=1 To Len(Str)
                Ret = Ret *base + Cint(Mid(Str,I,1))
            Next
            Str2Num=Ret
        End Function
         
        Private Function BinVal(Bin)
            Dim Ret,I
            Ret = 0
            For I = LenB(Bin) To 1 Step -1
                Ret = Ret *256 + AscB(MidB(Bin,I,1))
            Next
            BinVal=Ret
        End Function
         
        Private Function BinVal2(Bin)
            Dim Ret,I
            Ret = 0
            For I = 1 To LenB(Bin)
                Ret = Ret *256 + AscB(MidB(Bin,I,1))
            Next
            BinVal2=Ret
        End Function
         
        Private Function GetImageSize(filespec)
            Dim bFlag
            Dim Ret(3)
            ASO.LoadFromFile(filespec)
            bFlag=ASO.Read(3)
            Select Case Hex(binVal(bFlag))
            Case "4E5089":
                ASO.Read(15)
                ret(0)="PNG"
                ret(1)=BinVal2(ASO.Read(2))
                ASO.Read(2)
                ret(2)=BinVal2(ASO.Read(2))
            Case "464947":
                ASO.read(3)
                ret(0)="gif"
                ret(1)=BinVal(ASO.Read(2))
                ret(2)=BinVal(ASO.Read(2))
            Case "535746":
                ASO.read(5)
                binData=ASO.Read(1)
                sConv=Num2Str(ascb(binData),2 ,8)
                nBits=Str2Num(left(sConv,5),2)
                sConv=mid(sConv,6)
                While(len(sConv)<nBits*4)
                    binData=ASO.Read(1)
                    sConv=sConv&Num2Str(AscB(binData),2 ,8)
                Wend
                ret(0)="SWF"
                ret(1)=Int(Abs(Str2Num(Mid(sConv,1*nBits+1,nBits),2)-Str2Num(Mid(sConv,0*nBits+1,nBits),2))/20)
                ret(2)=Int(Abs(Str2Num(Mid(sConv,3*nBits+1,nBits),2)-Str2Num(Mid(sConv,2*nBits+1,nBits),2))/20)
            Case "FFD8FF":
                Do 
                Do: p1=binVal(ASO.Read(1)): Loop While p1=255 And Not ASO.EOS
                If p1>191 And p1<196 Then Exit Do Else ASO.read(binval2(ASO.Read(2))-2)
                Do:p1=binVal(ASO.Read(1)):Loop While p1<255 And Not ASO.EOS
                Loop While True
                ASO.Read(3)
                ret(0)="JPG"
                ret(2)=binval2(ASO.Read(2))
                ret(1)=binval2(ASO.Read(2))
            Case Else:
                If left(Bin2Str(bFlag),2)="BM" Then
                    ASO.Read(15)
                    ret(0)="BMP"
                    ret(1)=binval(ASO.Read(4))
                    ret(2)=binval(ASO.Read(4))
                Else
                        ret(0)=""
                End If
            End Select
            ret(3)="width=""" & ret(1) &""" height=""" & ret(2) &""""
            getimagesize=ret
        End Function
         
        Public Function imgW(IMGPath)
            Dim FSO,IMGFile,FileExt,Arr
            Set FSO = Server.CreateObject("Scripting.FileSystemObject")
            If (FSO.FileExists(IMGPath)) Then
                Set IMGFile = FSO.GetFile(IMGPath)
                FileExt=FSO.GetExtensionName(IMGPath)
                Select Case FileExt
                    Case "gif","bmp","jpg","png":
                    Arr=GetImageSize(IMGFile.Path)
                    imgW = Arr(1)
                End Select
                Set IMGFile=Nothing
            Else
                imgW = 0
            End If    
            Set FSO=Nothing
        End Function
        
        Public Function imgH(IMGPath)
            Dim FSO,IMGFile,FileExt,Arr
            Set FSO = server.CreateObject("Scripting.FileSystemObject")
            If (FSO.FileExists(IMGPath)) Then
                Set IMGFile = FSO.GetFile(IMGPath)
                FileExt=FSO.GetExtensionName(IMGPath)
                Select Case FileExt
                    Case "gif","bmp","jpg","png":
                    Arr=getImageSize(IMGFile.Path)
                    imgH = Arr(2)
                End Select
                Set IMGFile=Nothing
            Else
                imgH = 0
            End If    
            Set FSO=Nothing
        End Function
    End Class

    IMGPath="Test.jpg"

    Set PP = New ImgWHInfo 
    W = PP.imgW(Server.Mappath(IMGPath)) 
    H = PP.imgH(Server.Mappath(IMGPath))
    Set pp = Nothing
     
    Response.Write("<img src='"&IMGPath&"' border=0><br>宽:"&W&";高:"&H)
    %>


    首页 | 1 | 尾页  共 1 页
     
    hch004 打印本页 关闭窗口

         文 章 评 论
    评论人 查看该文章的评论 发表时间
       笔 名* : 0 50分 60分 70分 80分 90分 100分
    评论内容 *: (最多1000字。当前字数:0)


    没有相关评论,欢迎您参与!

    - 关于本站 - 网站帮助 - 下载声明 - 友情连接 - 网站地图 -
    Copyright © 2005-2006 myTopWin.Com. All Rights Reserved . [桂ICP备06004496号]