RLE4图片压缩算法的问题??研究过的高手帮忙啊

killeruser 2013-07-01 01:35:27
它的大小是19200 个字节,每个像素2-位,每个字节4 个像素,可以排
列320×240 个字符。这个数据以RLE 的编码形式发送,可以节省
传输时间。它的发送类型是“5”的二进制RLE 编码由0 后跟一个8 位数的连续0xFF 字节。下面的“c”码将解码输入数据。
void unpackDisplay ( void far* tdib, unsigned char far* rlescreen )
{
int i,j,k;
unsigned char far *sc4bpp, *sc2bpp, *screen, *ptr;
ptr = screen = (unsigned char far *)malloc(19200);
//RLE decode the screen
for (i=0; i<19200 && (ptr - screen) < 19200; i++)
{
*(ptr++) = *(rlescreen + i);
if (*(rlescreen + i) == 0)
{
unsigned char rlecount = *(unsigned char *)(rlescreen + ++i);
while (rlecount)
{
*(ptr++) = 0;
rlecount--;
}
}
else if (*(rlescreen + i) == 0xff)
{
unsigned char rlecount = *(unsigned char *)(rlescreen + ++i);
while (rlecount)
{
*(ptr++) = 0xff;
rlecount--;
}
}
}

...全文
202 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
laviewpbt 2013-07-06
  • 打赏
  • 举报
回复


已解码。
killeruser 2013-07-05
  • 打赏
  • 举报
回复
没人理
killeruser 2013-07-04
  • 打赏
  • 举报
回复
没人
killeruser 2013-07-01
  • 打赏
  • 举报
回复
下面为 要解码并存为图片的数据: 05 FA 0B 00 00 FF 4D 00 01 FF 11 FC 00 00 3F FC 00 00 3F C3 FF 00 C3 FC 00 00 3F C0 00 00 0F C3 FF 00 C3 C0 00 00 03 C0 00 00 3F FC 00 00 3F C0 00 00 03 FC 00 00 3F FC 00 00 3F C3 FF 00 C3 FF 14 00 01 FF 11 F0 00 00 0F F0 00 00 0F C0 FF 00 C3 F0 00 00 0F C0 00 00 03 C0 FF 00 C3 C0 00 00 03 C0 00 00 0F F0 00 00 0F C0 00 00 03 FC 00 00 3F F0 00 00 0F C0 FF 00 C3 FF 14 00 01 FF 11 C3 FF 00 C3 C3 FF 00 C3 C0 3F C3 C3 FF 00 C3 C3 FF 01 C0 3F C3 CF C3 F3 C3 FF 00 C3 C3 FF 00 C3 CF C3 F3 FF 00 C3 FF 00 C3 FF 00 C3 C0 3F C3 FF 14 00 01 FF 11 C3 FF 00 C3 C3 FF 00 C3 C3 0F C3 C3 FF 00 C3 C3 FF 01 C3 0F C3 FF 00 C3 FF 00 C3 FF 00 C3 C3 FF 00 C3 FF 00 C3 FF 01 C3 FF 00 C3 FF 00 C3 C3 0F C3 FF 14 00 01 FF 11 C3 FF 01 C3 FF 00 C3 C3 0F C3 C3 FF 01 C3 FF 01 C3 0F C3 FF 00 C3 FF 00 C3 FF 00 C3 C3 FF 00 C3 FF 00 C3 FF 01 C3 FF 00 C3 FF 00 C3 C3 0F C3 FF 14 00 01 FF 11 C3 FF 01 C3 FF 00 C3 C3 C3 C3 C3 FF 01 C0 00 00 3F C3 C3 C3 FF 00 C3 FF 00 C0 00 00 0F C0 00 00 03 FF 00 C3 FF 01 C3 FF 00 C3 FF 00 C3 C3 C3 C3 FF 14 00 01 FF 11 C3 FF 01 C3 FF 00 C3 C3 C3 C3 C3 FF 01 C0 00 00 3F C3 C3 C3 FF 00 C3 FF 00 C0 00 00 3F C0 00 00 03 FF 00 C3 FF 01 C3 FF 00 C3 FF 00 C3 C3 C3 C3 FF 14 00 01 FF 11 C3 FF 01 C3 FF 00 C3 C3 F0 C3 C3 FF 01 C3 FF 01 C3 F0 C3 FF 00 C3 FF 00 C3 0F FF 00 C3 FF 00 C3 FF 00 C3 FF 01 C3 FF 00 C3 FF 00 C3 C3 F0 C3 FF 14 00 01 FF 11 C3 FF 01 C3 FF 00 C3 C3 F0 C3 C3 FF 01 C3 FF 01 C3 F0 C3 FF 00 C3 FF 00 C3 C3 FF 00 C3 FF 00 C3 FF 00 C3 FF 01 C3 FF 00 C3 FF 00 C3 C3 F0 C3 FF 14 00 01 FF 11 C3 FF 01 C3 FF 00 C3 C3 FC 03 C3 FF 01 C3 FF 01 C3 FC 03 FF 00 C3 FF 00 C3 F0 FF 00 C3 FF 00 C3 FF 00 C3 FF 01 C3 FF 00 C3 FF 00 C3 C3 FC 03 FF 14 00 01 FF 11 C3 FF 00 C3 C3 FF 00 C3 C3 FF 00 03 C3 FF 00 C3 C3 FF 01 C3 FF 00 03 FF 00 C3 FF 00 C3 FC 3F C3 FF 00 C3 FF 00 C3 FF 01 C3 FF 00 C3 FF 00 C3 C3 FF 00 03 FF 14 00 01 FF 11 F0 00 00 0F F0 00 00 0F C3 FF 00 C3 F0 00 00 0F C0 00 00 03 C3 FF 00 C3 FF 00 C3 FF 00 C3 FF 00 0F C3 FF 00 C3 FF 00 C3 FF 00 F0 00 00 0F F0 00 00 0F C3 FF 00 C3 FF 14 00 01 FF 11 FC 00 00 3F FC 00 00 3F C3 FF 00 C3 FC 00 00 3F C0 00 00 0F C3 FF 00 C3 FF 00 C3 FF 00 C3 FF 00 C3 C3 FF 00 C3 FF 00 C3 FF 00 F0 00 00 0F FC 00 00 3F C3 FF 00 C3 FF 14 00 01 FF 4D 00 01 FF 4D 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 42 0F FF 01 F0 00 01 0F FF 01 F0 00 1F 0F FF 01 F0 00 08 0F F0 00 02 0F FF 01 F0 00 0F 3F FF 01 FC 00 01 3F FF 01 FC 00 1F 3F FF 01 FC 00 08 3F F0 00 02 3F FF 01 FC 00 0F FF 03 00 01 FF 03 00 1F FF 03 00 08 FF 00 F0 00 02 FF 03 00 0E 03 FF 03 C0 03 FF 03 C0 00 1D 03 FF 03 C0 00 06 03 FF 00 F0 00 01 03 FF 03 C0 00 0D 0F F0 00 01 0F F0 0F F0 00 01 0F F0 00 1D 0F 00 02 0F F0 00 06 0F FF 00 F0 00 01 0F 00 02 0F F0 00 0D 0F F0 00 03 0F F0 00 01 0F F0 00 1D 0F 00 02 0F F0 00 07 0F F0 00 01 0F 00 02 0F F0 00 0D 0F F0 00 03 0F F0 00 01 0F F0 00 21 0F F0 00 07 0F F0 00 05 0F F0 00 0D 0F F0 00 03 0F F0 00 01 0F F0 00 21 0F F0 00 07 0F F0 00 05 0F F0 00 0D 0F F0 00 03 0F F0 00 01 0F F0 00 21 0F F0 00 07 0F F0 00 05 0F F0 00 0D 0F F0 00 03 0F F0 00 01 0F F0 00 21 0F F0 00 07 0F F0 00 05 0F F0 00 0D 0F F0 00 03 0F F0 00 01 0F F0 00 21 3F C0 00 07 0F F0 00 05 3F C0 00 0D 0F F0 00 03 0F F0 00 01 0F F0 00 21 FF 00 00 08 0F F0 00 05 FF 00 00 0E 0F F0 00 03 0F F0 00 01 0F F0 00 20 03 FC 00 08 0F F0 00 04 03 FC 00 0E 0F F0 00 03 0F F0 00 01 0F F0 00 20 0F F0 00 08 0F F0 00 04 0F F0 00 0E 0F F0 00 03 0F F0 00 01 0F F0 00 20 3F C0 00 08 0F F0 00 04 3F C0 00 0E 0F F0 00 03 0F F0 00 01 0F F0 00 20 FF 00 00 09 0F F0 00 04 FF 00 00 0F 0F F0 00 03 0F F0 00 01 0F F0 00 1F 03 FC 00 09 0F F0 00 03 03 FC 00 01 3F FF 00 C0 3F FF 00 C0 0F 00 00 F0 00 04 0F F0 00 03 0F F0 00 01 0F F0 00 1F 0F F0 00 09 0F F0 00 03 0F F0 00 01 3F FF 00 F0 3F FF 00 F0 3F C3 FC 00 04 0F F0 00 03 0F F0 00 01 0F F0 00 1F 3F C0 00 09 0F F0 00 03 3F C0 00 01 3C 00 00 3C 3C 00 00 3C 3C 3C 3C 00 04 0F F0 00 03 0F F0 00 01 0F F0 00 1F FF 00 00 0A 0F F0 00 03 FF 00 00 02 3C 00 00 3C 3C 00 00 3C 3C 3C 3C 00 04 0F F0 00 03 0F F0 00 01 0F F0 00 1E 03 FC 00 03 0F FF 00 F0 00 03 0F F0 00 02 03 FC 00 02 3C 00 00 3C 3C 00 00 3C 3C 3C 3C 00 04 0F F0 00 01 0F F0 0F F0 00 01 0F F0 00 1E 0F F0 00 03 0F FF 00 F0 00 03 0F F0 00 02 0F F0 00 02 3F FF 00 F0 3F FF 00 F0 3C 3C 3C 00 04 03 FF 03 C0 03 FF 03 C0 00 1E 3F FF 02 F0 00 00 0F FF 00 F0 00 02 0F FF 01 F0 00 01 3F FF 02 F0 3F FF 00 C0 3F FF 00 C0 3C 3C 3C 00 05 FF 03 00 01 FF 03 00 1F FF 03 F0 00 00 0F FF 00 F0 00 02 0F FF 01 F0 00 01 FF 03 F0 3C 00 01 3C 00 01 3C 3C 3C 00 05 3F FF 01 FC 00 01 3F FF 01 FC 00 1E 03 FF 03 F0 00 00 0F FF 00 F0 00 02 0F FF 01 F0 00 00 03 FF 03 F0 3C 00 01 3C 00 01 3C 00 00 3C 00 05 0F FF 01 F0 00 01 0F FF 01 F0 00 1E 0F FF 03 F0 00 00 0F FF 00 F0 00 02 0F FF 01 F0 00 00 0F FF 03 F0 3C 00 01 3C 00 01 3C 00 00 3C 00 46 3C 00 01 3C 00 4B 3C 00 01 3C 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 09 FF 4D 00 01 FF 21 C3 FF 00 F0 00 00 03 FF 03 C3 FF 00 FC 00 00 3F FF 16 FC 3F FF 04 00 01 FF 21 03 FF 00 C0 00 00 03 FF 03 03 FF 00 F0 00 00 0F FF 16 F0 0F FF 04 00 01 FF 20 FC 03 FF 00 CF FF 00 0F FF 02 FC 03 FF 00 C3 FF 00 C3 FF 16 C0 03 FF 04 00 01 FF 21 C3 FF 01 FC 3F FF 00 03 FF 01 C3 FF 02 C3 FF 16 C0 03 FF 04 00 01 FF 21 C3 FF 01 F0 FF 01 03 FF 01 C3 FF 02 C3 FF 16 C0 03 FF 04 00 01 FF 21 C3 FF 01 C0 0F FF 00 03 FF 01 C3 FF 02 0F FF 16 00 01 FF 04 00 01 FF 21 C3 FF 01 00 00 03 FF 03 C3 FF 01 FC 3F FF 16 00 01 FF 04 00 01 FF 21 C3 FF 02 C3 FF 03 C3 FF 01 F0 FF 16 FC 00 01 3F FF 03 00 01 FF 21 C3 FF 02 C3 FF 03 C3 FF 01 C3 FF 16 FC 00 01 3F FF 03 00 01 FF 21 C3 FF 02 C3 FF 03 C3 FF 01 0F FF 16 C0 00 01 03 FF 03 00 01 FF 21 C3 FF 00 C3 FF 00 C3 FF 00 03 FF 01 C3 FF 00 FC 3F FF 16 00 03 FF 03 00 01 FF 20 FC 00 00 3F C0 00 00 03 FF 00 03 FF 00 FC 00 00 3F F0 00 00 03 FF 16 F0 0F FF 04 00 01 FF 20 FC 00 00 3F F0 00 00 0F FF 00 03 FF 00 FC 00 00 3F C0 00 00 03 FF 16 FC 3F FF 04 00 01 FF 4D 00 01 FF 4D 00 FF 00 FF 00 FF 00 FF 00 FF 00 04 FF 0E 00 05 FF 08 00 05 FF 0E 00 02 FF 0E 00 0A C0 00 00 3F FC 00 00 3F C3 FF 00 C3 FC 00 00 3F C0 00 00 0F 00 05 FC 00 00 3F C3 FF 00 C3 FC 00 00 3F 00 05 C0 00 00 FF 00 FC 00 00 3F FC 00 00 3F FC 00 00 3F FC 00 00 3F 00 02 FC 00 00 3F C3 FF 01 FC 00 00 3F C0 00 00 3F C3 FF 00 C3 00 0A C0 00 00 0F F0 00 00 0F C0 FF 00 C3 F0 00 00 0F C0 00 00 03 00 05 F0 00 00 0F C3 FF 00 C3 F0 00 00 0F 00 05 C0 00 00 3F FC 00 00 3F F0 00 00 0F F0 00 00 0F F0 00 00 0F 00 02 F0 00 00 0F C3 FF 01 F0 00 00 0F C0 00 00 0F C0 FF 00 03 00 0A C3 FF 00 C3 C3 FF 00 C3 C0 3F C3 C3 FF 00 C3 C3 FF 01 00 05 C3 FF 00 C3 C3 FF 00 C3 C3 FF 00 C3 00 05 C3 FF 00 0F FF 00 C3 FF 00 C3 FF 00 C3 C3 FF 00 C3 C3 FF 00 C3 00 02 C3 FF 00 C3 C3 FF 01 C3 FF 00 C3 C3 FF 00 C3 C0 3C 03 00 0A C3 FF 00 C3 C3 FF 00 C3 C3 0F C3 C3 FF 00 C3 C3 FF 01 00 05 C3 FF 00 C3 C3 FF 00 C3 C3 FF 00 C3 00 05 C3 FF 00 C3 FF 00 C3 FF 00 C3 FF 00 C3 C3 FF 00 C3 C3 FF 01 00 02 C3 FF 00 C3 C3 FF 01 C3 FF 00 C3 C3 FF 00 C3 C3 00 00 C3 00 0A C3 FF 00 C3 C3 FF 00 C3 C3 0F C3 C3 FF 01 C3 FF 01 00 05 C3 FF 00 C3 C3 FF 00 C3 C3 FF 01 00 05 C3 FF 00 C3 FF 00 C3 FF 00 C3 FF 00 C3 C3 FF 01 C3 FF 01 00 02 C3 FF 00 C3 C3 FF 01 C3 FF 00 C3 C3 FF 00 C3 C3 C3 C3 00 0A C0 00 00 0F C0 00 00 03 C3 C3 C3 C3 FF 01 C0 00 00 3F 00 05 C0 00 00 03 C3 FF 00 C3 C3 FF 01 00 05 C3 FF 00 C3 FF 00 C3 FF 00 C0 00 00 03 C3 FF 01 F0 00 00 3F 00 02 C0 00 00 03 C3 FF 01 C0 00 00 03 C0 00 00 0F C3 C3 C3 00 0A C0 00 00 3F C0 00 00 03 C3 C3 C3 C3 F0 03 C0 00 00 3F 00 05 C0 00 00 03 C3 FF 00 C3 C3 F0 03 00 05 C3 FF 00 C3 FF 00 C3 FF 00 C0 00 00 03 C3 F0 03 FC 00 00 0F 00 02 C0 00 00 03 C3 FF 01 C0 00 00 03 C0 00 00 3F C3 C3 C3 00 0A C3 0F FF 00 C3 FF 00 C3 C3 F0 C3 C3 F0 03 C3 FF 01 00 05 C3 FF 00 C3 C3 FF 00 C3 C3 F0 03 00 05 C3 FF 00 C3 FF 00 C3 FF 00 C3 FF 00 C3 C3 F0 03 FF 01 C3 00 02 C3 FF 00 C3 C3 FF 01 C3 FF 00 C3 C3 0F FF 00 C3 FF 00 C3 00 0A C3 C3 FF 00 C3 FF 00 C3 C3 F0 C3 C3 FF 00 C3 C3 FF 01 00 05 C3 FF 00 C3 C3 FF 00 C3 C3 FF 00 C3 00 05 C3 FF 00 C3 FF 00 C3 FF 00 C3 FF 00 C3 C3 FF 00 C3 FF 01 C3 00 02 C3 FF 00 C3 C3 FF 01 C3 FF 00 C3 C3 C3 FF 00 C3 FF 00 C3 00 0A C3 F0 FF 00 C3 FF 00 C3 C3 FC 03 C3 FF 00 C3 C3 FF 01 00 05 C3 FF 00 C3 F0 FF 00 0F C3 FF 00 C3 00 05 C3 FF 00 C3 FF 00 C3 FF 00 C3 FF 00 C3 C3 FF 00 C3 FF 01 C3 00 02 C3 FF 00 C3 C3 FF 01 C3 FF 00 C3 C3 F0 FF 00 C3 FF 00 C3 00 0A C3 FC 3F C3 FF 00 C3 C3 FF 00 03 C3 FF 00 C3 C3 FF 01 00 05 C3 FF 00 C3 FC 3C 3F C3 FF 00 C3 00 05 C3 FF 00 0F FF 00 C3 FF 00 C3 FF 00 C3 C3 FF 00 C3 C3 FF 00 C3 00 02 C3 FF 00 C3 C3 FF 01 C3 FF 00 C3 C3 FC 3F C3 FF 00 C3 00 0A C3 FF 00 0F C3 FF 00 C3 C3 FF 00 C3 F0 00 00 03 C0 00 00 03 00 05 C3 FF 00 C3 FF 00 00 00 FF 00 F0 00 00 03 00 05 C0 00 00 3F F0 00 00 0F C3 FF 00 C3 F0 00 00 03 F0 00 00 0F 00 02 C3 FF 00 C3 C0 00 00 03 C3 FF 00 C3 C3 FF 00 0F C3 FF 00 C3 00 0A C3 FF 00 C3 C3 FF 00 C3 C3 FF 00 C3 FC 00 00 03 C0 00 00 0F 00 05 C3 FF 00 C3 FF 00 C3 FF 00 FC 00 00 03 00 05 C0 00 00 FF 00 F0 00 00 0F C3 FF 00 C3 FC 00 00 03 FC 00 00 3F 00 02 C3 FF 00 C3 C0 00 00 0F C3 FF 00 C3 C3 FF 00 C3 C3 FF 00 C3 00 0A FF 0E 00 05 FF 08 00 05 FF 0E 00 02 FF 0E 00 0A FF 0E 00 05 FF 08 00 05 FF 0E 00 02 FF 0E 00 06 00 FF 怎么搞也弄不成啊 ,求高手帮忙啊 怎么解出来有19200长啊 图片是 4bpp(16色)
项目:JPEG图片压缩程序(1/5) 作者:zyl910 E-Mail:zyl910@sina.com 说明: 由于JPEG图片压缩的复杂性。就算是是最简单的基线系统(BaseLine), 若想一次实现对算法要求太高,且不易理解,再加上我对它不是特别熟悉。 于是我决定分5个步骤实现: 1.灰度 量化表:标准亮度量化表,共1张 Huffman表:标准DC/AC亮度Huffman表,共2张 2.彩色YUV111 量化表:标准亮度/色度量化表,共2张 Huffman表:标准DC/AC亮度Huffman表,共2张(亮度/色度用同一张Huffman表) 3.彩色YUV411 量化表:标准亮度/色度量化表,共2张 Huffman表:标准DC/AC亮度Huffman表,共2张(亮度/色度用同一张Huffman表) 4.使用DRI、RSTx标签 量化表:标准亮度/色度量化表,共2张 Huffman表:标准DC/AC亮度Huffman表,共2张(亮度/色度用同一张Huffman表) 5.自适应Huffman表 量化表:标准亮度/色度量化表,共2张 Huffman表:标准 亮度/色度 & DC/AC Huffman表,共4张 提示: JPEG压缩分为三个部分: 1.JPEG压缩原理及算法(RGB/YCbCr,DCT/IDCT,量化,Z字型编码,用DPCM对DC/用RLE对AC编码/Huffman编码) 2.JPEG标记格式 3.JPEG图片文件的组织形式(位于SOS后的图像压缩数据是由MCU块怎样排列的,特别是使用了DRI之后) 还有许多细节问题: 1.解码过程中遇到“FF 00”当“FF”处理,否则忽略“FF” 2.进行DCT前YCbCr要减128,进行IDCT前要加128(相当于Y减128,YCbCr不需要加128) 3.每个标记中数据可以不止一个(去掉长度的部分就是一段) 参考文献: 1.何斌《VC++数字图像处理》人民邮电出版社, 2001.4 2.张益贞《VC++实现JPEG/MPEG编解码技术》人民邮电出版社, 2002.11 3.杨淑莹《VC++图像处理程序设计》清华大学出版社/北方交通大学出版社, 2003.11(SOF0中,宽度/高度 写反了)

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧