在嵌入式开发当中,我们经常会需要显示公司logo,或者操作界面的图标,也自然会用到图像转换工具,比如uC-GUI-BitmapConvert, 下载地址连接页面 ,我们可以用它进行输入一幅位图,然后输出该位图对应的C语言形式的数据格式(包括位图调色板及位图数据部分,该部分就是调色板的索引)。这个工具很好用,但是对于不同图像会得到不同的调色板及数据索引,这样的话,如果有很多图像需要显示,就要得到很多不同的调色板,这样的话,会造成几个问题:
1. 嵌入式开发中,内存本来就很珍贵,不可能同时去存储多幅调色板。
2. 即使你的内存很牛且很大,但可能该OSD(即在线视频显示, 支持字符与视频的叠加)的芯片根本就不允许有多个调色板存在(本人目前就碰到这个问题,我用的是TW8811视频与字符叠加芯片),因为如果使用多个调色板,最后使用的调色板将会覆盖前面所有的调色板,使与之调色板对应的位图图像根本不能正常显示颜色。
为了解决上面这个很烦人的问题,则我给出一种非常好的思路及实践方法。那就是让所有的图标共享同一个调色板(我假设称之为公共调色板),然后使用photoshop将每幅图像按照该调色板进行定制,这样就可以满足要求了。那问题来了,我们如何取得一个公共的调色板及如何与其为模板进行自定义成一个自己的位图图像?
本人采用的方法是:
1. 通过将所有的图标放在同一个界面下,然后转换成位图图像(我假设称之为公共位图)
2. 然后通过PS保存该公共位图的调色板(可以有很多种调色板格式,我这里使用的是.aco的格式)。具体做法是:打开该公共位图,选择色板->存储色板->选择.aco
3. 在通过PS读入要处理的图像,然后用该公共调色板去调色该图像,最后保存下来。
即在PS菜单中,图像->模式->索引颜色->选择自定义调色板->导入刚才保存的公共调色板->保存
这里说说另一个问题,那就是我们通常可能需要将一幅图像转换成8位的bmp的格式,但发现默认只有16位、32位等格式,那么也可以通过上述的步骤,选择图像->模式->索引颜色。这样就可以有8位的格式了。
通过得到位图图像了,就可以用uC-GUI-BitmapConvert转换成C语言形式的数据了,具体是选择文件->另存为->选择调色板和数据。
好了,先写到这里了。
时间: 2024-11-09 03:43:29