我用socket收到一幅压缩过的tga图片的十六进制数据保存在一个字节数组中,然后怎样直接把这个字节数组中的图片保存成TGA文件或者显示在图片框中呢?
(图片数据太长了,放不上来,我一段一段发
00 00 10 00 00 00 00 00 00 00 60 00 00 00 60 00 00 0A A7 00 00 48 00 03 FF 07 EE FF 00 0F 12 0F 24 0F 36 0F 48 0F 00 5A 0F 6C 0F 7E 0F 90 0F A2 0F B4 0F C6 0F D8 0F 00 EA 0F FC 0F 0E 1F 20 1F 32 1F 44 1F 56 1F 68 1F 00 7A 1F 8C 1F 9E 1F B0 1F C2 1F D4 1F E6 1F F8 1F 00 0A 2F 1C 2F 2E 2F 40 2F 52 2F 64 2F 76 2F 88 2F 00 9A 2F AC 2F BE 2F D0 2F E2 2F F4 2F 06 3F 18 3F 00 2A 3F 3C 3F 4E 3F 60 3F 72 3F 84 3F 96 3F A8 3F 00 BA 3F CC 3F DE 3F F0 3F 02 4F 14 4F 26 4F 38 4F 00 4A 4F 5C 4F 6E 4F 80 4F 92 4F A4 4F B6 4F C8 4F 00 DA 4F EC 4F FE 4F 10 5F 22 5F 34 5F 46 5F 58 5F 00 6A 5F 7C 5F 8E 5F A0 5F B2 5F C4 5F D6 5F E8 5F 00 FA 5F 0C 6F 1E 6F 30 6F 42 6F 54 6F 66 6F 78 6F 00 8A 6F 9C 6F AE 6F C0 6F D2 6F E4 6F F6 6F 08 7F 00 1A 7F 2C 7F 3E 7F 50 7F 62 7F 74 7F 86 7F 98 7F 00 AA 7F BC 7F CE 7F E0 7F F2 7F 04 8F 16 8F 28 8F 00 3A 8F 4C 8F 5E 8F 70 8F 82 8F 94 8F A6 8F B8 8F 00 CA 8F DC 8F EE 8F 00 9F 12 9F 24 9F 36 9F 48 9F 00 5A 9F 6C 9F 7E 9F 90 9F A2 9F B4 9F C6 9F D8 9F 00 EA 9F FC 9F 0E AF 20 AF 32 AF 44 AF 56 AF 68 AF 00 7A AF 8C AF 9E AF B0 AF C2 AF D4 AF E6 AF F8 AF 00 0A BF 1C BF 2E BF 40 BF 52 BF 64 BF 76 BF 88 BF 00 9A BF AC BF BE BF D0 BF E2 BF F4 BF 06 CF 18 CF 00 2A CF 3C CF 4E CF 60 CF 72 CF 84 CF 96 CF A8 CF 00 BA CF CC CF DE CF F0 CF 02 DF 14 DF 26 DF 38 DF 00 4A DF 5C DF 6E DF 80 DF 92 DF A4 DF B6 DF C8 DF 00 DA DF EC DF FE DF 10 EF 22 EF 34 EF 46 EF 58 EF 00 6A EF 7C EF 8E EF A0 EF B2 EF C4 EF D6 EF E8 EF 00 FA EF 0C FF 1E FF 30 FF 42 FF 54 FF 66 FF 78 FF 00 8A FF 9C FF AE FF C0 FF D2 FF E4 FF F6 FF 08 0F 00 1A 0F 2C 0F 3E 0F 50 0F 62 0F 74 0F 86 0F 98 0F 00 AA 0F BC 0F CE 0F E0 0F F2 0F 04 1F 16 1F 28 1F 20 3A 1F 4C 1F 5E 1F 70 1F 82 1F BE 83 1F A7 1F 00 B9 1F CB 1F DD 1F EF 1F 01 2F 13 2F 25 2F 37 2F 06 45 2A 24 01 96 1F 6A 2F 7C 2F 8E 2F A0 2F C0 B2 2F C4 2F D6 2F E8 2F FA 2F 06 37 0C 03 0D 00 1A 30 6D 03 06 3F 30 3F 42 3F 54 3F 00 66 3F 78 3F 8A 3F 9C 3F AE 3F C0 3F C8 33 1A 31 06 1A 31 51 04 C8 3F F4 3F 06 4F 18 4F 2A 4F 00 3C 4F 4E 4F 60 4F 72 4F 84 4F D6 39 DA 33 8A 4F 00 BA 4F CC 4F DE 4F F0 4F 02 5F 14 5F 26 5F 38 5F F2 4A 5F 41 9C 4B DA 32 45 01 49 02 00 4C 5F 86 5F 98 5F AA 5F BC 5F CE 5F E0 5F F2 5F 04 04 6F 10 67 E3 60 5F A7 4F 45 6F 57 6F 69 6F 40 7B 6F 8D 6F 9F 6F B1 6F C3 6F 8F 4C 20 1D 30 00 28 6F FA 6F 0C 7F 1E 7F 30 7F 42 7F 54 7F 66 7F B0 78 7F 8A 7F 12 37 92 71 DB 06 EC 69 3C 00 91 7F CB 7F DD 7F EF 7F 01 8F 13 8F 25 8F 37 8F F0 49 8F 51 84 AC 71 D4 37 9E 07 30 04 00 F4 6F 86 8F 98 8F AA 8F BC 8F CE 8F E0 8F F2 8F 24 04 9F 8E 4D 08 75 52 1A 31 E3 7B 8F 43 9F 00 55 9F 67 9F 79 9F 8B 9F 9D 9F AF 9F C1 9F D3 9E 03 28 02 66 89 D4 9F 04 AF 16 AF 28 AF 3A AF 00 4C AF 5E AF 70 AF 82 AF 94 AF E8 9F B8 AF CA AF 00 DC AF EE AF 00 BF 12 BF 24 BF 36 BF 48 BF 9C AF 00 AE AF 7E BF 90 BF A2 BF B4 BF C6 BF D8 BF EA BF F4 FC BF 04 C3 8E 1F 3E 00 00 DB 06 00 62 BB 38 CF 4A
(图片数据太长了,放不上来,我一段一段发
00 00 10 00 00 00 00 00 00 00 60 00 00 00 60 00 00 0A A7 00 00 48 00 03 FF 07 EE FF 00 0F 12 0F 24 0F 36 0F 48 0F 00 5A 0F 6C 0F 7E 0F 90 0F A2 0F B4 0F C6 0F D8 0F 00 EA 0F FC 0F 0E 1F 20 1F 32 1F 44 1F 56 1F 68 1F 00 7A 1F 8C 1F 9E 1F B0 1F C2 1F D4 1F E6 1F F8 1F 00 0A 2F 1C 2F 2E 2F 40 2F 52 2F 64 2F 76 2F 88 2F 00 9A 2F AC 2F BE 2F D0 2F E2 2F F4 2F 06 3F 18 3F 00 2A 3F 3C 3F 4E 3F 60 3F 72 3F 84 3F 96 3F A8 3F 00 BA 3F CC 3F DE 3F F0 3F 02 4F 14 4F 26 4F 38 4F 00 4A 4F 5C 4F 6E 4F 80 4F 92 4F A4 4F B6 4F C8 4F 00 DA 4F EC 4F FE 4F 10 5F 22 5F 34 5F 46 5F 58 5F 00 6A 5F 7C 5F 8E 5F A0 5F B2 5F C4 5F D6 5F E8 5F 00 FA 5F 0C 6F 1E 6F 30 6F 42 6F 54 6F 66 6F 78 6F 00 8A 6F 9C 6F AE 6F C0 6F D2 6F E4 6F F6 6F 08 7F 00 1A 7F 2C 7F 3E 7F 50 7F 62 7F 74 7F 86 7F 98 7F 00 AA 7F BC 7F CE 7F E0 7F F2 7F 04 8F 16 8F 28 8F 00 3A 8F 4C 8F 5E 8F 70 8F 82 8F 94 8F A6 8F B8 8F 00 CA 8F DC 8F EE 8F 00 9F 12 9F 24 9F 36 9F 48 9F 00 5A 9F 6C 9F 7E 9F 90 9F A2 9F B4 9F C6 9F D8 9F 00 EA 9F FC 9F 0E AF 20 AF 32 AF 44 AF 56 AF 68 AF 00 7A AF 8C AF 9E AF B0 AF C2 AF D4 AF E6 AF F8 AF 00 0A BF 1C BF 2E BF 40 BF 52 BF 64 BF 76 BF 88 BF 00 9A BF AC BF BE BF D0 BF E2 BF F4 BF 06 CF 18 CF 00 2A CF 3C CF 4E CF 60 CF 72 CF 84 CF 96 CF A8 CF 00 BA CF CC CF DE CF F0 CF 02 DF 14 DF 26 DF 38 DF 00 4A DF 5C DF 6E DF 80 DF 92 DF A4 DF B6 DF C8 DF 00 DA DF EC DF FE DF 10 EF 22 EF 34 EF 46 EF 58 EF 00 6A EF 7C EF 8E EF A0 EF B2 EF C4 EF D6 EF E8 EF 00 FA EF 0C FF 1E FF 30 FF 42 FF 54 FF 66 FF 78 FF 00 8A FF 9C FF AE FF C0 FF D2 FF E4 FF F6 FF 08 0F 00 1A 0F 2C 0F 3E 0F 50 0F 62 0F 74 0F 86 0F 98 0F 00 AA 0F BC 0F CE 0F E0 0F F2 0F 04 1F 16 1F 28 1F 20 3A 1F 4C 1F 5E 1F 70 1F 82 1F BE 83 1F A7 1F 00 B9 1F CB 1F DD 1F EF 1F 01 2F 13 2F 25 2F 37 2F 06 45 2A 24 01 96 1F 6A 2F 7C 2F 8E 2F A0 2F C0 B2 2F C4 2F D6 2F E8 2F FA 2F 06 37 0C 03 0D 00 1A 30 6D 03 06 3F 30 3F 42 3F 54 3F 00 66 3F 78 3F 8A 3F 9C 3F AE 3F C0 3F C8 33 1A 31 06 1A 31 51 04 C8 3F F4 3F 06 4F 18 4F 2A 4F 00 3C 4F 4E 4F 60 4F 72 4F 84 4F D6 39 DA 33 8A 4F 00 BA 4F CC 4F DE 4F F0 4F 02 5F 14 5F 26 5F 38 5F F2 4A 5F 41 9C 4B DA 32 45 01 49 02 00 4C 5F 86 5F 98 5F AA 5F BC 5F CE 5F E0 5F F2 5F 04 04 6F 10 67 E3 60 5F A7 4F 45 6F 57 6F 69 6F 40 7B 6F 8D 6F 9F 6F B1 6F C3 6F 8F 4C 20 1D 30 00 28 6F FA 6F 0C 7F 1E 7F 30 7F 42 7F 54 7F 66 7F B0 78 7F 8A 7F 12 37 92 71 DB 06 EC 69 3C 00 91 7F CB 7F DD 7F EF 7F 01 8F 13 8F 25 8F 37 8F F0 49 8F 51 84 AC 71 D4 37 9E 07 30 04 00 F4 6F 86 8F 98 8F AA 8F BC 8F CE 8F E0 8F F2 8F 24 04 9F 8E 4D 08 75 52 1A 31 E3 7B 8F 43 9F 00 55 9F 67 9F 79 9F 8B 9F 9D 9F AF 9F C1 9F D3 9E 03 28 02 66 89 D4 9F 04 AF 16 AF 28 AF 3A AF 00 4C AF 5E AF 70 AF 82 AF 94 AF E8 9F B8 AF CA AF 00 DC AF EE AF 00 BF 12 BF 24 BF 36 BF 48 BF 9C AF 00 AE AF 7E BF 90 BF A2 BF B4 BF C6 BF D8 BF EA BF F4 FC BF 04 C3 8E 1F 3E 00 00 DB 06 00 62 BB 38 CF 4A
谁能帮我确定下这到底是个什么类型的图片呢?
节表明的对应文件类型:
0 - 文件中没有图像数据
1 - 未压缩的,颜色表图像
2 - 未压缩的,rgb 图像
3 - 未压缩的,黑白图像
9 - runlength 编码的颜色表图像
10 - runlength 编码的 rgb 图像
11 - 压缩的,黑白图像
32 - 使用 huffman,delta 和 runlength 编码的颜色表图像
33 - 使用 huffman,delta 和 runlength 编码的颜色映射图像,4 趟四叉树类型处理。
|数据类型 10:run length 编码,rgb 图像
|--------|--------|------------------------------------------------------------
| 偏移 | 长度 | 描述
|--------|--------|------------------------------------------------------------
| 0 | 1 | 图像信息字段(见本子表的后面)的字符数
| | |
| | | 本字段是 1 字节无符号整型,指出了图像格式区别字段长度
| | | 其取值范围是 0 到 255 ,当它为 0 时表示没有图像的
| | | 信息字段。
| | |
|--------|--------|------------------------------------------------------------
| 1 | 1 | 该字段的内容或者为 0 或者为 1;0 表示没有颜色表,1 表示
| | | 颜色表存在。由于本格式是无颜色表的,因此此项通常被忽略。
| | | 提示:如果置为 1(targa 绘画程序)将把边框颜色设置为映射
| | | 中的第一种颜色
| | |
|--------|--------|------------------------------------------------------------
| 2 | 1 | 图像类型代码
| | |
| | | 本类型该字段为二进制 10
| | |
|--------|--------|------------------------------------------------------------
| 3 | 5 | 颜色表规格
| | |
| | | 如果颜色表类型字段为 0 则被忽略;否则描述如下
| | |
| | |
| 3 | 2 | 颜色表首址
| | | 颜色表首元入口的整型(低位-高位)索引
| | |
| 5 | 2 | 颜色表的长度
| | | 颜色表的表项总数,整型(低位-高位)
| | |
| 7 | 1 | 颜色表表项的位(bit)数
| | | 16 代表 16 位 TGA ,24 代表 24 位 TGA ,32 代表 32 位 TGA
| | |
|--------|--------|------------------------------------------------------------
| 8 | 10 | 图像规格
| | |
| 8 | 2 | 图像 x 坐标起始位置
| | | 图像左下角 x 坐标的整型(低位-高位)值
| | |
| | |
| 10 | 2 | 图像 y 坐标起始位置
| | | 图像左下角 y 坐标的整型(低位-高位)值
| | |
| | |
| 12 | 2 | 图像宽度
| | | 以像素为单位,图像宽度的整型(低位-高位)值
| | |
| 14 | 2 | 图像高度
| | | 以像素为单位,图像高度的整型(低位-高位)值
| | |
| 16 | 1 | 图像每像素存储占用位(bit)数
| | |
| | |
| 17 | 1 | 图像描述符字节
| | | bits 3-0 - 每像素的属性位(bit)数
| | |
| | | bit 4 - 保留,必须为 0
| | | bit 5 - 屏幕起始位置标志
| | | 0 = 原点在左下角
| | | 1 = 原点在左上角
| | | truevision 图像必须为 0
| | | bits 7-6 - 交叉数据存储标志
| | | 00 = 无交叉
| | | 01 = 两路奇/偶交叉
| | | 10 = 四路交叉
| | | 11 = 保留
| | |
|--------|--------|------------------------------------------------------------
| 18 | 可变 | 图像信息字段
| | | 包含一个自由格式的,长度是图像记录块偏移 0 处的字节中的
| | | 值。它常常被忽略(即偏移 0 处值为 0 ),注意其最大可以
| | | 含有 255 个字符。如果需要存储更多信息,可以放在图像数据
| | | 之后
| | |
|--------|--------|------------------------------------------------------------
| 可变 | 可变 | 颜色表数据
| | |
| | | 如果颜色表类型为 0,则该域不存在,否则越过该域直接读取
| | | 图像颜色表规格中描述了每项的字节数,为 2,3,4 之一
| | |
|--------|--------|------------------------------------------------------------
| 可变 | 可变 | 图像数据域
| | |
| | | 本区域给出了(宽度)x(高度)个颜色表索引这些索引存放
| | | 在数据包中;有两中类型的数据包:run-length 数据包,
| | | 以及未加工的数据包,每种类型的数据包含有 1-字节的头信息,
| | | (其中指出了数据包类型和数目),其后是可变长度的数据域
| | | 头信息中最高位为 1 表示 run-length 类型的数据包,当
| | | 它为 0 时,表示未加工的数据包
| | |
| | | 对于 run-length 数据包,头信息含义如下
| | | __________________________________________________
| | | | 1 bit | 7 位的重复记数减一
| | | | id | 由于 7 位表示的最大值为 127,故最大 |
| | | | | 的运行大小为 128,(译注:原文为 |
| | | | | the largest run size) |
| | | |-------|----------------------------------------|
| | | | 1 | c c c c c c c |
| | | --------------------------------------------------
| | |
| | | 对于未加工数据包,头信息的含义如下
| | | __________________________________________________
| | | | 1 bit | 7 位的像素个数减一 |
| | | | id | 由于 7 位表示的最大值为 127,故该 |
| | | | | 类型的一个数据包中像素个数不能大于 |
| | | | | 128 |
| | | |-------|----------------------------------------|
| | | | 0 | n n n n n n n |
| | | --------------------------------------------------
| | |
| | |
| | | 对于 run length 数据包,头信息之后是一个简单颜色值,
| | | 且假定该值重复的次数为头信息中记录的数
| | | run-length 数据包也许会跨越扫描线
| | | (扫描线起始于某行结束于下一行)
| | |
| | | 对于未加工数据包,头信息之后是颜色值(数目由头信息指出)
| | |
| | |
| | | 颜色表项自身有 2-字节,3-字节或 4-字节几种大小(分别
| | | 对应 TGA 16,TGA 24 和 TGA 32)形式如下:
| | |
| | |
| | | 3 字节表项中各字节依次对应 BLUE,GREEN,RED
| | |
| | | 2 字节表项中,两个字节分解成如下形式:
| | | arrrrrgg gggbbbbb
| | | 但是,由于低位在前,高位在后的存储顺序,从文件中读出表项
| | | 时,将先读入 gggbbbbb 而后读入 arrrrrgg ;a 表示属性位
| | |
| | | 4 字节表项包含了分别代表 blue,green,red 及属性的四个
| | | 字节;(由于硬件上的原因)有的时候 TGA 24 类型的图像也象
| | | TGA 32 类型的图像那样存储
| | |
--------------------------------------------------------------------------------
00 00 60 00 00 00 60 00 00 中的二个60分别对应图片的宽度和高度,但如果这二个字节代表的是宽度和高度的话,那么和TGA的格式就对应不上了,头大呀
2.或者,你参看<图像格式设计>,检查所有格式,看看哪种与你的相符.