这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 关于51+sd+tft的电子相册!!(BMP的问题!)

共4条 1/1 1 跳转至

关于51+sd+tft的电子相册!!(BMP的问题!)

菜鸟
2011-03-17 19:54:21     打赏
关于51+sd+tft的电子相册!!其中24位BMP图片转化为16位时颜色失真问题的解决办法!!!!
我转换为RGB-565的算法是:color=((r>>3)<<11)|((g>>2)<<5)|(b>>3);



关键词: 关于     51+sd+tft     电子相册     问题    

菜鸟
2011-03-20 09:45:47     打赏
2楼
没人遇到过这样的问题吗?

高工
2011-04-01 15:47:24     打赏
3楼
哪位坛友遇到过呀,过来分享一下吧

专家
2011-04-01 16:02:57     打赏
4楼
unsigned int  Colour16   =   0;    
   
  Colour16   |=   ((red24   /   8)   &   0x1f)   <<   11;   //   5   Most   significant   red   bits    
  into   high   byte   of   colour    
  Colour16   |=   ((green24   /   4)   &   0x3f)   <<   5; //   6   Most   significant   green    
  Colour16   |=   ((blue   24   /   8)   &   0x1f);              //   5   Most   significant   blue
或者:
unsigned int  Colour16   =   0;    
   
  Colour16   |=   ((red24   >>3 )   &   0x1f)   <<   11;   //   5   Most   significant   red   bits    
  into   high   byte   of   colour    
  Colour16   |=   ((green24   />>2)   &   0x3f)   <<   5; //   6   Most   significant   green    
  Colour16   |=   ((blue   24   /  >>3)   &   0x1f);              //   5   Most   significant   blue

应该和你的是一样的!
确实还失真的话只能是加上一个偏移量了!(偏移量由你具体的环境所决定,自己估计)


  16位色也可以叫   64K   色,每像素占   2   字节,其位元占用如下:  
      蓝:0-4           绿:5-10           红:11-15  
   
  24位色也可以叫   16M   色,每像素占   3   字节,其位元占用如下:  
      蓝:0-7           绿:8-15           红:16-23  
   
  要显示   24   bit   的点时,只需将   24bit   的像素值(包括   rgb   三个值)通过移位  
  转化为   16   bit   就行了。

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]