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

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

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

 

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

'***************************
    ' 函数: 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_是图片流数据)code

 '***************************
    ' 函数: 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_是图片流数据)blog

 '***************************
    ' 函数: 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
相关文章
相关标签/搜索