后台程序获取JPG/GIF/PNG图片宽度、高度

这是很久之前编写的代码,该代码是读取流数据指定位置的内容,获取图片的宽度、高度值。

由于系统更新,这些代码丢之不用,在这里存个档吧!

 

1. 获取gif图片宽度、高度。(binary_是图片流数据)

    '***************************
    ' 函数:    gif_size()
    ' 说明:    获取gif的宽高值
    ' 返回:    [Array]
    '         Array(0) 宽度值
    '         Array(1) 高度值
    ' 
    Private Function gif_size()
        On Error Resume Next
        Dim w, h
        w = sysString.hexToOct( hex(ascb(midb(binary_,8,1))) & hex(ascb(midb(binary_,7,1))) )
        h = sysString.hexToOct( hex(ascb(midb(binary_,10,1))) & hex(ascb(midb(binary_,9,1))) )

        If Err.Number<>0 Then
            gif_size = Array(0,0)
            Err.Clear()
        Else
            If sysNumber.isInt(w, 1) And sysNumber.isInt(h, 1) Then
                gif_size = Array(w, h)
            Else
                gif_size = Array(0,0)
            End If
        End If
    End Function

 

2. 获取jpg图片宽度、高度。(binary_是图片流数据)

    '***************************
    ' 函数:    jpg_size()
    ' 说明:    获取jpg的宽高值
    ' 返回:    [Array]
    '         Array(0) 宽度值
    '         Array(1) 高度值
    ' 
    Private Function jpg_size()
        On Error Resume Next
        Dim w, h
        Dim splitStr, i, tmp_binary

        'FF 的ASC值为 255 C0 的ASC值为 192
        'split是无法将流进行分割,但instrb可以获取标识所在的位置点
        '由于有些图片含有多个ff c0标识,但最后一个才是最终的标识,所以采用反复不停过滤掉ff c0方式
        tmp_binary = binary_
        splitStr = chrb(255) & chrb(192)
        i = instrb(tmp_binary, splitStr)
        Do While i<>0
            w = sysString.hexToOct( hex(ascb(midb(tmp_binary,i+7,1))) & hex(ascb(midb(tmp_binary,i+8,1))) )'
            h = sysString.hexToOct( hex(ascb(midb(tmp_binary,i+5,1))) & hex(ascb(midb(tmp_binary,i+6,1))) )'
            tmp_binary = midb(tmp_binary,i+2)
            i = instrb(tmp_binary, splitStr)
        Loop

        If Err.Number<>0 Then
            jpg_size = Array(0,0)
            Err.Clear()
        Else
            If sysNumber.isInt(w, 1) And sysNumber.isInt(h, 1) Then
                jpg_size = Array(w, h)
            Else
                jpg_size = Array(0,0)
            End If
        End If
    End Function

 

3. 获取png图片宽度、高度。(binary_是图片流数据)

    '***************************
    ' 函数:    jpg_size()
    ' 说明:    获取jpg的宽高值
    ' 返回:    [Array]
    '         Array(0) 宽度值
    '         Array(1) 高度值
    ' 
    Private Function png_size()
        On Error Resume Next
        Dim w, h
        w  = sysString.hexToOct( hex(ascb(midb(binary_,17,1))) & hex(ascb(midb(binary_,18,1))) & hex(ascb(midb(binary_,19,1))) & hex(ascb(midb(binary_,20,1))) )
        h  = sysString.hexToOct( hex(ascb(midb(binary_,21,1))) & hex(ascb(midb(binary_,22,1))) & hex(ascb(midb(binary_,23,1))) & hex(ascb(midb(binary_,24,1))) )'

        If Err.Number<>0 Then
            png_size = Array(0,0)
            Err.Clear()
        Else
            If sysNumber.isInt(w, 1) And sysNumber.isInt(h, 1) Then
                png_size = Array(w, h)
            Else
                png_size = Array(0,0)
            End If
        End If
    End Function

 

posted @ 2019-01-15 10:30  1024记忆  阅读(871)  评论(0编辑  收藏  举报