这是好久以前编写的代码,该代码是读取流数据指定位置的内容,获取图片的宽度、高度值。函数
因为系统更新,这些代码丢之不用,在这里存个档吧!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