硬汉嵌入式论坛

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

[emWin] 图形压缩格式求助

[复制链接]

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2023-9-14 09:15:32 | 显示全部楼层 |阅读模式
看到一段代码,显示一张图片的功能,不知道是用的什么解压方式。

屏显示是用的TFT的16位RGB方式。图片存储数据格式为:
1.前4个2字节,即 u16 color[4] 是存储的颜色,有4种:0,0x51D,0x4C9,0xF422,再后面接着就是1700字节的图片压缩数据了
2.解析代码也很简单,就是逐个读取出1700B的数据,每字节分成4段b01,b23,b45,b67,每段表示选取前面u16 color[b01]的颜色数据进行写入屏显示即可

这种是什么图片的显示呢,是已知公开的还是私有定义的呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2023-9-14 09:23:41 | 显示全部楼层
如果楼主描述的没有误,就是简单的位图显示。
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
 楼主| 发表于 2023-9-14 10:13:22 | 显示全部楼层
本帖最后由 jplzl10000 于 2023-9-14 10:15 编辑
eric2013 发表于 2023-9-14 09:23
如果楼主描述的没有误,就是简单的位图显示。

我猜也是bmp位图显示,但是我看了下emwin中的bmp的结构定义,对不上呀。
有没有什么方法把图片转换成这种数据格式呀
另,我原帖中贴了图片,怎么没发出去呢

存储数据

存储数据

显示代码

显示代码
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2023-9-14 10:18:14 | 显示全部楼层
jplzl10000 发表于 2023-9-14 10:13
我猜也是bmp位图显示,但是我看了下emwin中的bmp的结构定义,对不上呀。
有没有什么方法把图片转换成这 ...

BMP是的原始数据是倒序排列的,你应该使用BmpCvt生成个位图作比较就清晰了。
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
 楼主| 发表于 2023-9-14 10:27:23 | 显示全部楼层
eric2013 发表于 2023-9-14 10:18
BMP是的原始数据是倒序排列的,你应该使用BmpCvt生成个位图作比较就清晰了。

BmpCvt 这软件生成的就是这种BMP格式呀。但这明显是没有压缩的呀。

GUI_CONST_STORAGE GUI_BITMAP bmlogo = {
  320, // xSize
  240, // ySize
  640, // BytesPerLine
  16, // BitsPerPixel
  (unsigned char *)_aclogo,  // Pointer to picture data
  NULL,  // Pointer to palette
  GUI_DRAW_BMP565
};
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2023-9-14 11:25:15 | 显示全部楼层
jplzl10000 发表于 2023-9-14 10:13
我猜也是bmp位图显示,但是我看了下emwin中的bmp的结构定义,对不上呀。
有没有什么方法把图片转换成这 ...

这个颜色格式是什么样的,8222,还不是RGB565。这个格式是直接写入到LCD吗。难道搞了了个RLE压缩,这个倒是不像
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
 楼主| 发表于 2023-9-14 15:44:53 | 显示全部楼层
eric2013 发表于 2023-9-14 11:25
这个颜色格式是什么样的,8222,还不是RGB565。这个格式是直接写入到LCD吗。难道搞了了个RLE压缩,这个倒 ...

颜色格式是 RGB565 的了。就是颜色数据直接写到LCD上就显示的,比如清屏就是写了 230*320 个 0。
这个看上去有点像是自己写的软件工具,把电脑端的bmp文件转换成这个数据结构。就是不知道他这个颜色是怎么处理的。实际显示上看就是个蓝色的艺术字体图片。
类似下面这种。
下载 (1).png
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
 楼主| 发表于 2023-9-16 10:45:04 | 显示全部楼层
eric2013 发表于 2023-9-14 11:25
这个颜色格式是什么样的,8222,还不是RGB565。这个格式是直接写入到LCD吗。难道搞了了个RLE压缩,这个倒 ...

现在这问题有了点新的认识。TFT用的驱动芯片应该是ILI9341。

现在发现,只发送一个颜色数据时,会出现横向的4个相同的小图片。如果发2次颜色数据,就会出现横向的2个相同的大一倍的图片。
发3次的话,图片就出错了,有空隙。发4次的话,图形最大,大部分是好的,就是中间有些空隙。
这个是不是和IL9341的扫描方式有关。我看代码中 0x36命令下设置的 0xA0。设置的是从下到上,从左到右的扫描方式
下载 (2).png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106882
QQ
发表于 2023-9-16 11:25:43 | 显示全部楼层
jplzl10000 发表于 2023-9-16 10:45
现在这问题有了点新的认识。TFT用的驱动芯片应该是ILI9341。

现在发现,只发送一个颜色数据时,会出现 ...

9341和9488应该是一样的,9488的各个方向旋转配置我做过,配置好后,数据发送方式都是一样的。

从下到上,从左到右只是横竖屏的切换。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-9 03:38 , Processed in 0.212727 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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