我最近在STM3210E开发板上开发了一些固件,它有一个ARM cortex M3处理器。它已连接到240x320 LCD。在完成演示固件之后,我意识到图像是以32位变量编码的(如果我错了,请纠正我)存储在数组中,如下所示。
uint32_t STM32Banner [50] = {0x6461EB7A,0x646443BC,0x64669BFE,0x6468F440,0x646B4C82, 0x646DA4C4,0x646FFD06,0x64725548,0x6474AD8A,0x647705CC, 0x64795E0E,0x647BB650,0x647E0E92,0x648066D4,0x6482BF16, 0x64851758,0x64876F9A,0x6489C7DC,0x648C201E,0x648E7860, 0x6490D0A2,0x649328E4,0x64958126,0x6497D968,0x649A31AA, 0x649C89EC,0x649EE22E,0x64A13A70,0x64A392B2,0x64A5EAF4, 0x64A84336,0x64AA9B78,0x64ACF3BA,0x64AF4BFC,0x64B1A43E, 0x64B3FC80,0x64B654C2,0x64B8AD04,0x64BB0546,0x64BD5D88, 0x64BFB5CA,0x64C20E0C,0x64C4664E,0x64C6BE90,0x64C916D2, 0x64CB6F14,0x64CDC756,0x64D01F98,0x64D277DA,0x64D4D01C}
您能否解释一下如何将JPEG / PNG / BMP图像转换为此格式(RGB565)?
答案 0 :(得分:1)
您有两种选择:
第一种解决方案只适用于BMP(也许是GIF),与PNG和JPEG相比,这种格式非常简单。即便如此,编写一个BMP解码器可以处理所有不同版本和BMP的特性,这需要相当多的工作(我已经尝试过了)。将可以从最常见的BMP格式中提取图像数据的东西混合在一起非常容易。
第二种解决方案可能是采用其他格式的方法。大多数开源解码器都可以在LGPL或类似产品下使用,因此许可不应该成为问题。对于JPEG图像,使用libJPEG,使用libPNG使用PNG,使用giflib使用GIF。
大多数解码器不支持解码到RGB565,因此您必须编写转换器以将RGB888转换为RGB565。
答案 1 :(得分:0)
使用像GIMP这样的程序转换为未压缩的bmp(保存时通常会得到的bmp)。
bmp类似于54字节的标题,然后它进入数据。每行是每像素3像素(RGB)或4字节(RGBX)的像素。宽度在4字节边界上对齐,所以如果你有三个字节,并且乘以宽度(以像素为单位),如果它不是四的倍数(比如说3位宽* 3 = 9作为一个简单的例子)那么就会有一些填充。你知道从gimp中打开文件有多宽,你可能想要使用gimp来调整图像以匹配你的液晶屏幕。标题后面的数据的第一个字节是图像左下角的像素,您可能需要在y轴上翻转图像,或者只是以这种方式开始,看看会发生什么。
知道你的图像的大小,(从用gimp打开它),你可以做一些数学运算,看看文件的大小是否与我所说的相匹配,如果它大大小一点,那么就会有一些压缩您需要再次保存并更改bmp的设置。
一旦弄明白,然后写一个简单的程序从bmp中提取像素并以你想要的格式保存它们。更好的阅读代码和文档,并了解如何编程液晶显示器,你可以从原始像素到液晶显示器,而不必通过他们的特定格式/代码。