cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 4523|回复: 8

[fx-9860/9750] [9860SDK]图片压缩第一弹

[复制链接]
发表于 2011-7-25 10:01:47 | 显示全部楼层 |阅读模式
本帖最后由 diameter 于 2011-7-25 13:31 编辑

代码生成器在5L
9860的默认图片结构是单色位图,绘图时只有OVER、OR、AND、XOR四种合成方式,Norm,Rev,Mesh三种处理方式。对于下图所示的效果,默认的图片格式可能很难做到
__.JPG
对于上图所示效果,其实只需要加一种颜色(或曰标志)去色就可以做到。
曾经我使用一个byte作为一个标志,很浪费内存,
一共三种颜色(标志位)那每一位需要的bit为[log(2,3)]
所以不如将再加一种不用的颜色凑足四位,[log(2,4)]更易计算
测试效果
__tst.JPG

评分

参与人数 1金钱 +2 收起 理由
GWHBOB + 2 欢迎探讨

查看全部评分

发表于 2011-7-25 12:02:51 | 显示全部楼层
晕了……
发表于 2011-7-25 12:18:26 | 显示全部楼层
看不懂…
 楼主| 发表于 2011-7-25 13:23:59 | 显示全部楼层
回ls两位,我的意思就是把一个byte作为4pixel
可以做到下图的测试效果
5.bmp
 楼主| 发表于 2011-7-25 13:30:53 | 显示全部楼层
代码生成器
4code.exe (32 KB, 下载次数: 17)
 楼主| 发表于 2011-7-25 13:32:47 | 显示全部楼层
绘图函数

  1. void draw_image_4 (int x,int y,int width,int height,unsigned char *pimage)
  2. {
  3.     int i,j,k,pixel;
  4.     unsigned char p;
  5.     int iwidth = width/4 + (width & 1 ? 1:0);
  6.     for (i=0;i<height;++i,pimage+=iwidth){
  7.         for (j=0;j<iwidth;++j){
  8.             p = pimage[j];
  9.             for (k=0;k<4;++k){
  10.                 pixel     =    p % 4;
  11.                 p        /=     4;
  12.                 switch(pixel){
  13.                 default:
  14.                 case 0:break;
  15.                 case 1:Bdisp_SetPoint_VRAM(x+k+j*4,y+i,0);break;
  16.                 case 2:Bdisp_SetPoint_VRAM(x+k+j*4,y+i,1);break;
  17.                 }
  18.             }
  19.         }
  20.     }
  21. }
复制代码
发表于 2011-7-27 14:27:04 | 显示全部楼层
能发个完整的源码吗?
发表于 2011-7-31 12:32:31 | 显示全部楼层
用4阶灰度2bit加透明1bit,一byte里还剩5bit=32种可能。表示这个颜色的重复数。

  1. □□■■□□■■□□
  2. □■□□■■□□■□
  3. □□■□□□□■□□
  4. □□□■□□■□□□
  5. □□□□■■□□□□
复制代码
等于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□
如果是黑白可以略去颜色压缩为
  1. 5*10
  2. 2,2,2,2,3,1,2,2,2,1,3,1,4,1,5,1,2,1,7,2,4
复制代码

评分

参与人数 1金钱 +2 收起 理由
diameter + 2 欢迎探讨

查看全部评分

发表于 2022-10-23 10:33:07 | 显示全部楼层
生成器下载不了啊...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-12-4 01:50 , Processed in 0.054749 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表