当前位置:编程学习 > VB >>

如何将十六进制数组中的有用部分保存成为JPEG图像文件,再打开

菜鸟一个,努力成为一个鸟。
如何将十六进制数组中的有用部分保存成为JPEG图像文件,再打开。说明这里边已经包含一个JPEG的图像数据
举例说明,我在Text1中有一串数组,分为三个数据包,
(第一个包)00 00 FA 01 FF D8 FF E0 00 11 4A 46 49 46 00 01 02 03 04 05 06 07 08 09 0A FF 

DB 00 43 00 10 0C 0C 0E 0C 0A 10 0E 0E 0E 12 12 10 14 18 28 1A 18 16 16 18 32 24 26 1E 28 

3A 34 3E 3C 3A 34 38 38 40 48 5C 4E 40 44 58 46 38 38 50 6E 52 58 60 62 68 68 68 3E 4E 72 

7A 70 64 78 5C 66 68 64 FF DB 00 43 01 12 12 12 16 16 16 30 1A 1A 30 64 42 38 42 64 64 64 

64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 

64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 FF C4 00 1F 00 00 01 05 01 01 01 01 01 

01 00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 10 00 02 01 03 03 

02 04 03 05 05 04 04 00 00 01 7D 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 07 22 71 14 

32 81 91 A1 08 23 42 B1 C1 15 52 D1 F0 24 33 62 72 82 09 0A 16 17 18 19 1A 25 26 27 28 29 

2A 34 35 36 37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63 64 65 66 67 68 

69 6A 73 74 75 76 77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99 9A A2 A3 A4 

A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 

D8 D9 DA E1 E2 E3 E4 E5 E6 E7 E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FF C4 00 1F 01 00 03 

01 01 01 01 01 01 01 01 01 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 

11 00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77 00 01 02 03 11 04 05 21 31 06 12 41 51 

07 61 71 13 22 32 81 08 14 42 91 A1 B1 C1 09 23 33 52 F0 15 62 72 D1 0A 16 24 34 E1 25 F1 

17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56 57 58 59 

5A 63 64 65 D5 00 

(第二个包)01 00 46 01 66 67 68 69 6A 73 74 75 76 77 78 79 7A 82 83 84 85 86 87 88 89 8A 

92 93 94 95 96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 

C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3 F4 F5 F6 F7 

F8 F9 FA FF C0 00 11 08 00 40 00 50 03 01 22 00 02 11 01 03 11 01 FF DA 00 0C 03 01 00 02 

11 03 11 00 3F 00 85 56 A5 14 D1 4E 14 08 7A D4 EA 2A 14 A9 87 4A 45 08 6A 5B 4E 24 E6 A2 

35 2C 3C 1C D2 19 B4 92 00 29 DE 68 15 41 64 E2 9E 24 C5 31 17 44 C3 1C 75 A9 77 03 54 95 

C5 48 BE C6 9D 80 E5 41 A7 03 51 03 4F 53 48 44 EB 52 66 A1 53 4F CD 21 8F A9 10 E2 A1 06 

9E 1A 81 93 EF C5 48 24 CD 54 2D 42 BE 29 A0 2F AC 98 A9 D2 4A CF 57 A9 56 4A A0 30 81 A7 

A9 A8 43 53 D4 D4 92 58 06 9C 1A A1 0D 4E 0D 48 64 A0 D3 B7 54 21 A8 DD 40 C9 4B 53 43 53 

37 52 6E A6 22 CA 3D 4C 1A A9 AB 54 CA D4 C0 C9 06 A4 06 A0 06 9E 1A 90 89 C3 52 E6 A2 0D 

ED 4E DD 48 64 99 A5 DD 51 6E A5 DD 40 12 6E A3 35 1E 69 41 A6 04 A0 D4 C8 D5 58 1A 91 5A 

98 1F FF D9 32 00 

JPEG文件一定是以FF D8开始,FF D9结束
如设一帧512字节,那么只有506个是数,其余六字节是ID两个,数拒尺寸两个校验为2个
也就是说标了红色的字节数不要,再将剩余的保存成JPEG的图像文件,再打开。
需要将这些数组转换成为二进制再保存吗?
再问一下,如果我有三个包,或四个包,我将如何处理?
--------------------编程问答-------------------- 改一下,
举例说明,我在Text1中有一串数组,分为两个数据包 --------------------编程问答--------------------
'下面的语句将文本去除空格、回车后,留下16进制文本,
'1024个字符一段,你用Mid()可以很容易将需要的数据挖出来
sAll = replace(replace(text1.text, vbCrLf, vbNullString), " ", vbNullString)

'假设 sBlock 为挖出来的数据,那么如下将每两个字符转化为Byte
dim n as byte
n = CByte("&H" & Mid$(sBlock, i*2, 2))

'逐个将Byte值写入jpg文件,注意文件句柄 hFile 是用 Binary 方式打开的
Put #hFile, , n
--------------------编程问答-------------------- 我先试试 --------------------编程问答-------------------- 谢谢Tiger_zhao的回贴,你的回帖带给我很多启发。在这里再次感谢你。我做的是关于以太网传输,winsock的部分我已经完成了,还差图片还原部分。
因为我实在太菜了,刚接触VB,以前也没有学过编程,硬着头皮就上了,所以问题可能会很菜,请包容。
你的回帖上的方法我用了,但是实现不了数据的提取,估计是我的程序有问题。你能不能给我一个较完整
一点参考例子,例如设置2个text,text1用于放入数组,通过一个command转换提取有用的数据,转换后的数据放在text2,
再通过一个command,将数组转为二进制并保存为jpg格式,再将jpg文件打开。
耽误你宝贵的时间真是不好意思,公司逼得我太紧了~~~~ --------------------编程问答-------------------- 在线等待~~~ --------------------编程问答-------------------- 楼主标记出的红色部分应该不是图像数据吧,我把红色部分去掉后还原出了一个80x64的图片文件(834字节)。
代码如下:

Private Sub Command1_Click()
    Dim str1 As String, str2 As String, str3() As String, Data() As Byte
    Dim i As Long
    str1 = "FF D8 FF E0 00 11 4A 46 49 46 00 01 02 03 04 05 06 07 08 09 0A FF " & _
            "DB 00 43 00 10 0C 0C 0E 0C 0A 10 0E 0E 0E 12 12 10 14 18 28 1A 18 16 16 18 32 24 26 1E 28 " & _
            "3A 34 3E 3C 3A 34 38 38 40 48 5C 4E 40 44 58 46 38 38 50 6E 52 58 60 62 68 68 68 3E 4E 72 " & _
            "7A 70 64 78 5C 66 68 64 FF DB 00 43 01 12 12 12 16 16 16 30 1A 1A 30 64 42 38 42 64 64 64 " & _
            "64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 " & _
            "64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 FF C4 00 1F 00 00 01 05 01 01 01 01 01 " & _
            "01 00 00 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 10 00 02 01 03 03 " & _
            "02 04 03 05 05 04 04 00 00 01 7D 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 07 22 71 14 " & _
            "32 81 91 A1 08 23 42 B1 C1 15 52 D1 F0 24 33 62 72 82 09 0A 16 17 18 19 1A 25 26 27 28 29 " & _
            "2A 34 35 36 37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63 64 65 66 67 68 " & _
            "69 6A 73 74 75 76 77 78 79 7A 83 84 85 86 87 88 89 8A 92 93 94 95 96 97 98 99 9A A2 A3 A4 " & _
            "A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 " & _
            "D8 D9 DA E1 E2 E3 E4 E5 E6 E7 E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FF C4 00 1F 01 00 03 " & _
            "01 01 01 01 01 01 01 01 01 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 " & _
            "11 00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77 00 01 02 03 11 04 05 21 31 06 12 41 51 " & _
            "07 61 71 13 22 32 81 08 14 42 91 A1 B1 C1 09 23 33 52 F0 15 62 72 D1 0A 16 24 34 E1 25 F1 " & _
            "17 18 19 1A 26 27 28 29 2A 35 36 37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56 57 58 59 " & _
            "5A 63 64 65 D5 00 "

    str2 = "66 67 68 69 6A 73 74 75 76 77 78 79 7A 82 83 84 85 86 87 88 89 8A " & _
            "92 93 94 95 96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 " & _
            "C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3 F4 F5 F6 F7 " & _
            "F8 F9 FA FF C0 00 11 08 00 40 00 50 03 01 22 00 02 11 01 03 11 01 FF DA 00 0C 03 01 00 02 " & _
            "11 03 11 00 3F 00 85 56 A5 14 D1 4E 14 08 7A D4 EA 2A 14 A9 87 4A 45 08 6A 5B 4E 24 E6 A2 " & _
            "35 2C 3C 1C D2 19 B4 92 00 29 DE 68 15 41 64 E2 9E 24 C5 31 17 44 C3 1C 75 A9 77 03 54 95 " & _
            "C5 48 BE C6 9D 80 E5 41 A7 03 51 03 4F 53 48 44 EB 52 66 A1 53 4F CD 21 8F A9 10 E2 A1 06 " & _
            "9E 1A 81 93 EF C5 48 24 CD 54 2D 42 BE 29 A0 2F AC 98 A9 D2 4A CF 57 A9 56 4A A0 30 81 A7 " & _
            "A9 A8 43 53 D4 D4 92 58 06 9C 1A A1 0D 4E 0D 48 64 A0 D3 B7 54 21 A8 DD 40 C9 4B 53 43 53 " & _
            "37 52 6E A6 22 CA 3D 4C 1A A9 AB 54 CA D4 C0 C9 06 A4 06 A0 06 9E 1A 90 89 C3 52 E6 A2 0D " & _
            "ED 4E DD 48 64 99 A5 DD 51 6E A5 DD 40 12 6E A3 35 1E 69 41 A6 04 A0 D4 C8 D5 58 1A 91 5A " & _
            "98 1F FF D9"

    str3 = Split(str1 & str2, " ")

    ReDim Data(UBound(str3))
    For i = 0 To UBound(str3)
        Data(i) = "&H" & str3(i)
    Next

    Open "c:\a.jpg" For Binary Access Write As #1
    Put #1, , Data
    Close #1
End Sub
--------------------编程问答-------------------- 对,红色部分不是图像数据,去除红色部分是图像数据 --------------------编程问答-------------------- 对,红色部分不是图像数据,去除红色部分是图像数据 --------------------编程问答-------------------- modest,为何我将数据粘帖在text上,却不能与你的程序结合在一起呢? 
Data(i) = "&H" & str3(i)总是显示错误在这一句,对象不匹配 --------------------编程问答-------------------- http://topic.csdn.net/u/20080605/21/8c6fb57e-9465-4103-a84e-31b82957ba62.html

有一些转换的例子
--------------------编程问答-------------------- Private Sub Command1_Click()
Dim str1 As String, str2 As String, str3 As String, str4() As String, Data() As Byte
    Dim i As Long
    str1 = "FF D8 FF E0 00 11 4A 46 49 46 00 01 02 03 04 05 06 07 08 09 0A FF DB 00 43 " & _
           "00 10 0C 0C 0E 0C 0A 10 0E 0E 0E 12 12 10 14 18 28 1A 18 16 16 18 32 24 26 " & _
           "1E 28 3A 34 3E 3C 3A 34 38 38 40 48 5C 4E 40 44 58 46 38 38 50 6E 52 58 60 " & _
           "62 68 68 68 3E 4E 72 7A 70 64 78 5C 66 68 64 FF DB 00 43 01 12 12 12 16 16 " & _
           "16 30 1A 1A 30 64 42 38 42 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 " & _
           "64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 " & _
           "64 64 64 64 64 64 64 64 64 FF C4 00 1F 00 00 01 05 01 01 01 01 64 64 64 64 " & _
           "64 64 64 64 64 64 FF C4 00 1F 00 00 01 05 01 01 01 01 01 01 00 00 00 00 00 " & _
           "00 00 00 01 02 03 04 05 06 07 08 09 0A 0B FF C4 00 B5 10 00 02 01 03 03 02 " & _
           "04 03 05 05 04 04 00 00 01 7D 01 02 03 00 04 11 05 12 21 31 41 06 13 51 61 " & _
           "07 22 71 14 32 81 91 A1 08 23 42 B1 C1 15 52 D1 F0 24 33 62 72 82 09 0A 16 " & _
           "17 18 19 1A 25 26 27 28 29 2A 34 35 74 75 76 77 78 79 7A 83 84 85 86 87 88 " & _
           "89 8A 92 93 94 95 96 97 98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 " & _
           "B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA E1 E2 E3 " & _
           "E4 E5 E6 E7 E8 E9 EA F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FF C4 00 1F 01 00 03 01 " & _
           "01 01 01 01 01 01 01 01 00 00 00 00 00 00 01 02 03 04 05 06 07 08 09 0A 0B " & _
           "FF C4 00 B5 11 00 02 01 02 04 04 03 04 07 05 04 04 00 01 02 77 00 01 02 03 " & _
           "11 04 05 21 31 06 12 41 51 07 61 71 13 22 32 81 08 14 42 91 A1 B1 C1 09 23 " & _
           "33 52 F0 15 62 72 D1 0A 16 24 34 E1 25 F1 17 18 19 1A 26 27 28 29 2A 35 36 " & _
           "37 38 39 3A 43 44 45 46 47 48 49 4A 53 54 55 56 57 58 59 5A 63 64 65 D5 00 "
 
    
   str2 = "66 67 68 69 6A 73 74 75 76 77 78 79 7A 82 83 84 85 86 87 88 89 8A 92 93 94 95 96 97 " & _
          "98 99 9A A2 A3 A4 A5 A6 A7 A8 A9 AA B2 B3 B4 B5 B6 B7 B8 B9 BA C2 C3 C4 C5 C6 C7 C8 " & _
          "C9 CA D2 D3 D4 D5 D6 D7 D8 D9 DA E2 E3 E4 E5 E6 E7 E8 E9 EA F2 F3 F4 F5 F6 F7 F8 F9 " & _
          "FA FF C0 00 11 08 00 40 00 50 03 01 22 00 02 11 01 03 11 01 FF DA 00 0C 03 01 00 02 " & _
          "11 03 11 00 3F 00 BA 2A BD D4 25 B6 4A 1B 05 33 C6 3A 83 DB DA AC 81 9A 64 83 70 2B " & _
          "59 B7 66 6A 95 CA 28 30 00 AB 31 0C 0D C7 F0 F7 A6 08 F2 A9 8F BC 73 C5 5B 81 62 91 " & _
          "B6 96 E9 F7 46 2B 56 CE 74 AE C9 E1 82 36 58 4E EF 97 9C 9C 75 AA F7 88 56 53 2B 7D " & _
          "E7 FE 1F 4C 55 88 E1 79 2F 7E CB BB 6A 2E 3B 74 C8 CD 3A F2 25 50 81 A2 31 B4 64 82 " & _
          "B9 CE 73 49 33 5B 69 62 BC 32 18 A3 91 B3 D7 18 A5 84 36 FD EC 72 D4 30 65 07 3D 4F " & _
          "51 E9 4D 0F B4 63 14 D1 9C B4 5C A6 CC 65 66 89 91 8E 38 AC 12 08 24 1E A2 BA 4D 32 " & _
          "78 DE 28 E3 6F F5 8B 9C 7E B5 93 AB 42 63 BF 73 8F 95 B1 8F C8 54 C9 95 49 58 84 71 " & _
          "55 2F 25 2B 35 BA 47 19 79 5C 92 0E 71 B7 03 93 EF C1 35 68 B0 03 26 A1 76 66 38 5E " & _
          "A7 B5 43 DC E9 8C 5B 20 53 B4 F4 E6 A7 B6 E5 D5 07 F1 75 FC 2A 19 06 D9 08 ED 4F 8D " & _
          "88 04 2F DE 3D FD 2B 4E 87 26 D2 34 1C C6 C5 B7 3E C6 43 CB 63 3D 6A 7B D9 5A ED 96 " & _
          "50 B8 E3 E5 19 FC EA 94 8F E6 CC 78 C8 18 CF 3D 78 AB 53 2F FA 04 32 0E 83 39 FC E9 " & _
          "24 6E 53 95 82 C7 91 FC 55 0A AE 4F 27 14 8E D9 26 94 1C 1A AE 9A 18 4D A7 23 42 CE " & _
          "42 92 86 1D 45 68 6B 90 97 8A 39 07 44 CE 7F 1C 56 5D B3 81 CD 6D DE  " & _
          "13 71 A4 B9 1D 4E 3F 9D 45 9D C7 17 66 73 6F C8 C1 E9 53 26 D4 40 07 4A CC 37 8D 28 " & _
          "3F 67 88 C8 3B 92 76 28 00 "
          
          
          
   str3 = "8F D6 A3 5D 50 2B 95 95 76 01 D5 81 CD 4B DC EA B3 2E 4E A7 39 FC A9 A8 48 60 47 5A " & _
          "20 97 ED 76 4B 22 AE 1B 9C 0C FB D2 46 C0 80 E2 AE 2C E7 AB 1B 3B 97 42 98 E3 52 BD " & _
          "06 7F 1A 7F 9F 8B 19 63 3C 72 31 F9 D4 32 36 D4 C7 5A AF 92 41 F7 A6 82 A4 AC AC 86 " & _
          "E6 9C 0F 14 CD AC 4F 4A B1 14 6A 41 DD D6 AA E6 29 36 4B 6A 54 92 18 F1 5B B6 93 21 " & _
          "B7 64 23 8A E7 9B 6A BE 41 EB DA B5 AC A6 66 0B 1A 47 93 F5 A3 70 6A CC E6 45 9D B1 " & _
          "1C A6 7F E0 46 A1 BB 8C 2A 25 B4 20 2A C8 79 FC 39 A9 E1 97 7A 66 A0 6D CD 7C A5 BE " & _
          "E0 FF 00 0A C5 EE 77 97 B4 F4 18 96 24 F9 50 10 40 F4 AB 97 91 B1 80 18 D3 71 5E D9 " & _
          "AA 96 D3 01 72 B1 28 C6 41 AD 74 CD 17 22 49 3D CC 58 E4 0E 32 0D 48 A7 E6 AD 36 B3 " & _
          "85 A5 F3 0A FC C6 A4 11 A2 F4 15 7C E6 0E 96 BA 19 38 91 CF CA B5 2A DB 4A DF 7B 8A " & _
          "BE E6 99 B8 E6 8E 66 35 4D 75 19 0D 9A 02 0B 1C D7 41 66 51 23 DA A3 02 B2 62 52 4D " & _
          "5F 89 5D 97 6E 38 3D 68 D5 EE 3E 54 8F FF D9 "

          
          
    str4 = Split(str1 & str2 & str3, " ")

    ReDim Data(UBound(str4))
    For i = 0 To UBound(str4)
        Data(i) = "&H" & str4(i)    Next

    Open "c:\a.jpg" For Binary Access Write As #1
    Put #1, , Data
    Close #1

End Sub
为何标红色的地方会出现对象不匹配 --------------------编程问答-------------------- 楼上的
  Next 
要另起一行啊
晕 --------------------编程问答-------------------- 太好了,找遍了,终于让我在这里找到了!!太感谢斑竹了!!
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,