这语言表达让我十分蛋疼.
原始图像只有240*320,怎么可能解出480*320? 非要这个结果,那只能自己做插值计算,人为的补足缺失的像素
另外你举的例子似乎并无问题
100行: (R1G0B0R0G0B0) 在16bpp的LCD上的显示结果应该是 “红-黑”
101行: (R0G0B0R1G0B0) 在16bpp的LCD上的显示结果应该是 “黑-红”
最后结果应该是红黑相间而且上下行断开(R0G0B0是黑还是白我不太确定,按道理应该是黑)。
还有 (R1G0B0R1G0B0) 应该是 “红-红”,最后结果是连续的红色也是自然而然的。
至于你说的上面的结果发暗,那是因为掺入了一半黑色点,整体图像的平均亮度下降。下面的结果鲜艳也不过是因为所有像素都是红色,而没有掺入黑色杂色。
个人猜测你的问题只是不会把jpeg解码后的数据格式转为RGB565罢了。我没有用libjpeg,是自己写的jpeg解码,所以不能确定libjpeg的输出格式一定是RGB24,这里先假设解码后的数据格式为RGB24
你把解码过后的数据按照三个字节为一组
每组就是 R:8bit G:8bit B:8bit
然后把R和B的低3位削了(右移),G的低2位削了,然后拼成一个16bit的字
即 R:5bit G:6bit B: 5bit
最后把转换完的数据丢到framebuffer里就结了。