硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6197|回复: 2
收起左侧

[有问必答] bmp 图片显示 24bit 32bit 请教??

[复制链接]

610

主题

3055

回帖

4905

积分

至尊会员

积分
4905
发表于 2015-5-8 15:23:22 | 显示全部楼层 |阅读模式
bmp 的 1bit, 4bit, 8bit, 16bit 显示都正常,唯独这个24bit 与 32bit 显示不正常,

大侠们帮忙看看是怎么回事 ??

24、32 位转化为 16位的:#define BMP_GET_RGB_565_CONVERT(red, green, blue) (u16)( (u16)((red >> 3) << 11) | (u16)((green >> 2) << 5) | (u16)(blue >> 3) )


320x480 32bit 源图片


320x480 32bit  单片机显示的图片


32bit 读取函数
                                        for (i = 1; i <= bh.height; i++)
                                        {
                                                f_read(&fsrc, (u8 *)&bmp_buffer[0], line_byte, &counter);

                                                for (j = 0; j < bh.width; j++)
                                                {
                                                        __IO u8 r=0,g=0,b=0;
                                                        ILI9486_SetCursor((x + j), ((y + bh.height) - i));                        //解决图片显示上下反的问题
                                                        
                                                        r = bmp_buffer[j * 4];
                                                        g = bmp_buffer[(j * 4) + 1];
                                                        b = bmp_buffer[(j * 4) + 2];
                                                        LCD_RAM = (u16)( (u16)((r >> 3) << 11) | (u16)((g >> 2) << 5) | (u16)(b >> 3) );
                                                        
                                                }
                                        }


320x480 24bit 源图片


320x480 24bit  单片机显示的图片


24bit 读取函数
                                        for (i = 1; i <= bh.height; i++)
                                        {
                                                res = f_read(&fsrc, (u8 *)bmp_buffer, line_byte, &counter);                        //读取24位的*.bmp的颜色数据格式: BGR,切记
                                                
                                                for (j = 0; j < bh.width; j++)
                                                {
                                                        __IO u8 r=0,g=0,b=0;
                                                        ILI9486_SetCursor((x + j), ((y + bh.height) - i));                        //解决图片显示上下反的问题
                                                        
                                                        r = bmp_buffer[j * 3];
                                                        g = bmp_buffer[(j * 3) + 1];
                                                        b = bmp_buffer[(j * 3) + 2];
                                                        LCD_RAM = (u16)( (u16)((r >> 3) << 11) | (u16)((g >> 2) << 5) | (u16)(b >> 3) );
                                                      
                                                        
                                                }
                                        }
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106771
QQ
发表于 2015-5-11 17:45:05 | 显示全部楼层
楼主的图片亮瞎了[s:138]

应该是颜色错位了导致这种情况。楼主现在解决了没
回复

使用道具 举报

610

主题

3055

回帖

4905

积分

至尊会员

积分
4905
 楼主| 发表于 2015-5-13 16:16:55 | 显示全部楼层

回 eric2013 的帖子

eric2013:楼主的图片亮瞎了[s:138]

应该是颜色错位了导致这种情况。楼主现在解决了没 (2015-05-11 17:45)
你好,已经解决了,原因就如你说的

有没有可以支持微软雅黑字体的汉字库去摸软件啊 ???
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 18:33 , Processed in 0.216643 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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