|
楼主 |
发表于 2013-2-17 19:03
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
cumulonimbus 发表于 2013-2-17 15:23
我把bisizeimage平均分成4份,每38个字节为一份(既然每行为152个字节,那么从38处开始分了),希望把验证 ...
Sub 分割图片()
Dim crr() As Byte
Dim arr()
Dim brr()
Dim drr()
On Error Resume Next
With CreateObject("Msxml2.XMLHTTP.6.0")
.Open "GET", "http://club.excelhome.net/forum.php?mod=attachment&aid=MTM0ODMyM3xiZTg0ZjEyM3wxMzYxMDg3MjM5fDE2NjY1MTV8OTgwMzAz&noupdate=yes", False
.send
If "c:\2.bmp" <> "" Then Kill "c:\2.bmp" '如果存在2.bmp,就删除
crr = .responseBody '把.responseBody放到二进制数组crr里面
kuandu = Val(crr(18)) + 256 * Val(crr(19))
gaodu = Val(crr(22)) + 256 * Val(crr(23))
'Range(Cells(1, 1), Cells(gaodu, kuandu)).Clear
cangdu = crr(10) + 256 * crr(11) '位图数据位的字节偏移量
sewei = crr(28) + 256 * crr(29) '每一个像素的位(1,4,8,16,24,32),第29~30字节
If sewei = 32 Then zijie = 4 '每一个像素的字节数,32位图,每像素占4字节
If sewei = 24 Then zijie = 3 '每一个像素的字节数,24位图,每像素占3字节
'Debug.Print sewei
ReDim arr(1 To kuandu * gaodu)
ReDim brr(1 To gaodu, 1 To kuandu)
a1 = cangdu
senyu = (kuandu * zijie) Mod 4 '图形每行末端填充0的字节数
'Debug.Print senyu
For i = 1 To kuandu * gaodu
ts = ""
arr(i) = ""
For j = 0 To 2
ts = ts & "," & Val(crr((i - 1) * zijie + a1 + j))
Next j
If i / kuandu = Int(i / kuandu) Then a1 = a1 + senyu
arr(i) = ts
Next i
For i = 1 To gaodu
For j = 1 To kuandu
brr(gaodu + 1 - i, j) = arr((i - 1) * kuandu + j)
Next j
Next i
ReDim drr(0 To 417)
For j = 0 To 53
drr(j) = crr(j)
Next j
drr(18) = 9
drr(22) = 13
drr(2) = 162
drr(3) = 1
drr(34) = 108
drr(35) = 1
a = 53
For i = 4 To 16
For j = 3 To 11
a = a + 1
drr(a) = Split(brr(i, j), ",")(1)
a = a + 1
drr(a) = Split(brr(i, j), ",")(2)
a = a + 1
drr(a) = Split(brr(i, j), ",")(3)
Next j
a = a + 1
drr(a) = 0
Next i
If "c:\2.bmp" <> "" Then Kill "c:\2.bmp"
Open "c:\2.bmp" For Binary As #1
For i = 0 To UBound(drr)
crr(i) = drr(i)
Put #1, i + 1, crr(i)
Next i
Close #1
End With
End Sub |
评分
-
1
查看全部评分
-
|