国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

獲得jpg文件的實際尺寸

2019-11-18 20:34:48
字體:
來源:轉載
供稿:網友
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 '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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苏尼特左旗| 绿春县| 师宗县| 宜都市| 祁连县| 台前县| 万安县| 门源| 建水县| 佛学| 鄂伦春自治旗| 随州市| 长顺县| 琼海市| 宜城市| 松原市| 叶城县| 砀山县| 普兰县| 崇义县| 湟中县| 尚志市| 南岸区| 涿州市| 光泽县| 恩平市| 金秀| 巴林右旗| 墨竹工卡县| 静海县| 临沧市| 牙克石市| 乐亭县| 芜湖市| 平湖市| 家居| 连城县| 新干县| 开平市| 永城市| 富顺县|