您的位置:首页技术开发ASP技巧 → 获得jpg文件的实际尺寸

获得jpg文件的实际尺寸

时间:2004/11/7 4:11:00来源:本站整理作者:蓝点我要评论(0)

bask



把它编译成组件就可以用了,还支持png





'I have released this source code into the public domain.  You may use it

'with no strings attached.

'Just call GetImageSize with a string containing the filename, and

'it will return a user defined type 'ImageSize'  (see below)

'Return values of 0 indicate an error of some sort.  The error handling

'in this module is limited.  There is *NO* error handling on the test

'form.  This routine is limited to X or Y sizes of 32767 pixels, but that

'should not be a problem.



'Check back at http://www.qtm.net/~davidc

'I may add support for more file types.



'supported in this version:

'JPEG

'GIF

'PNG



'This routine does not require any royalty fees for Unisys as it

'does nothing with the compressed part of GIF files.  It simply reads

'4 bytes to determine image size.



Option Explicit

Public WImg As Long

Public HImg As Long

Public Type ImageSize

    Width As Long

    Height As Long

End Type



Public Sub GetImageSize(sFileName As String)

    On Error Resume Next        'you'll want to change this

    Dim iFN As Integer

    Dim bTemp(3) As Byte

    Dim lFlen As Long

    Dim lPos As Long

    Dim bHmsb As Byte

    Dim bHlsb As Byte

    Dim bWmsb As Byte

    Dim bWlsb As Byte

    Dim bBuf(7) As Byte

    Dim bDone As Byte

    Dim iCount As Integer



    lFlen = FileLen(sFileName)

    iFN = FreeFile

    Open sFileName For Binary As iFN

    Get #iFN, 1, bTemp()

        

    'PNG file

    If bTemp(0) = &H89 And bTemp(1) = &H50 And bTemp(2) = &H4E _

    And bTemp(3) = &H47 Then

        Get #iFN, 19, bWmsb

        Get #iFN, 20, bWlsb

        Get #iFN, 23, bHmsb

        Get #iFN, 24, bHlsb

        'GetImageSize.Width = CombineBytes(bWlsb, bWmsb)

        'GetImageSize.Height = CombineBytes(bHlsb, bHmsb)

        WImg = CombineBytes(bWlsb, bWmsb)

        HImg = CombineBytes(bHlsb, bHmsb)

    End If

    

    'GIF file

    If bTemp(0) = &H47 And bTemp(1) = &H49 And bTemp(2) = &H46 _

    And bTemp(3) = &H38 Then

        Get #iFN, 7, bWlsb

        Get #iFN, 8, bWmsb

        Get #iFN, 9, bHlsb

        Get #iFN, 10, bHmsb

        'GetImageSize.Width = CombineBytes(bWlsb, bWmsb)

        'GetImageSize.Height = CombineBytes(bHlsb, bHmsb)

        WImg = CombineBytes(bWlsb, bWmsb)

        HImg = CombineBytes(bHlsb, bHmsb)

    End If

    

    

    'JPEG file

    If bTemp(0) = &HFF And bTemp(1) = &HD8 And bTemp(2) = &HFF Then

    Debug.Print "JPEG"

        lPos = 3

        Do

            Do

                Get #iFN, lPos, bBuf(1)

                Get #iFN, lPos + 1, bBuf(2)

                lPos = lPos + 1

            Loop Until (bBuf(1) = &HFF And bBuf(2) <> &HFF) Or lPos > lFlen

        

            For iCount = 0 To 7

                Get #iFN, lPos + iCount, bBuf(iCount)

            Next iCount

            If bBuf(0) >= &HC0 And bBuf(0) <= &HC3 Then

                bHmsb = bBuf(4)

                bHlsb = bBuf(5)

                bWmsb = bBuf(6)

                bWlsb = bBuf(7)

                bDone = 1

            Else

                lPos = lPos + (CombineBytes(bBuf(2), bBuf(1))) + 1

            End If

        Loop While lPos < lFlen And bDone = 0

        'GetImageSize.Width = CombineBytes(bWlsb, bWmsb)

        'GetImageSize.Height = CombineBytes(bHlsb, bHmsb)

        WImg = CombineBytes(bWlsb, bWmsb)

        HImg = CombineBytes(bHlsb, bHmsb)

    End If

    Close iFN

    

End Sub

Private Function CombineBytes(lsb As Byte, msb As Byte) As Long

    CombineBytes = CLng(lsb + (msb * 256))

End Function


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案