[9860SDK]图片压缩第一弹
本帖最后由 diameter 于 2011-7-25 13:31 编辑代码生成器在5L
9860的默认图片结构是单色位图,绘图时只有OVER、OR、AND、XOR四种合成方式,Norm,Rev,Mesh三种处理方式。对于下图所示的效果,默认的图片格式可能很难做到
对于上图所示效果,其实只需要加一种颜色(或曰标志)去色就可以做到。
曾经我使用一个byte作为一个标志,很浪费内存,
一共三种颜色(标志位)那每一位需要的bit为
所以不如将再加一种不用的颜色凑足四位,更易计算
测试效果 晕了…… 看不懂… 回ls两位,我的意思就是把一个byte作为4pixel
可以做到下图的测试效果 代码生成器
绘图函数
void draw_image_4 (int x,int y,int width,int height,unsigned char *pimage)
{
int i,j,k,pixel;
unsigned char p;
int iwidth = width/4 + (width & 1 ? 1:0);
for (i=0;i<height;++i,pimage+=iwidth){
for (j=0;j<iwidth;++j){
p = pimage;
for (k=0;k<4;++k){
pixel = p % 4;
p /= 4;
switch(pixel){
default:
case 0:break;
case 1:Bdisp_SetPoint_VRAM(x+k+j*4,y+i,0);break;
case 2:Bdisp_SetPoint_VRAM(x+k+j*4,y+i,1);break;
}
}
}
}
}
能发个完整的源码吗? 用4阶灰度2bit加透明1bit,一byte里还剩5bit=32种可能。表示这个颜色的重复数。
□□■■□□■■□□
□■□□■■□□■□
□□■□□□□■□□
□□□■□□■□□□
□□□□■■□□□□等于2□2■2□2■2□
1□1■2□2■2□1■1□
2□1■4□1■2□
3□1■2□1■3□
4□2■4□
如果是黑白可以略去颜色压缩为 5*10
2,2,2,2,3,1,2,2,2,1,3,1,4,1,5,1,2,1,7,2,4
生成器下载不了啊...
页:
[1]