主题 : 急!!!!***关于3.5TFT液晶屏显示和jpg图片解码的问题*** 复制链接 | 浏览器收藏 | 打印
您还没有设置个性签名!
级别: 新手上路
UID: 24998
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2010-07-17
最后登录: 2010-11-06
楼主  发表于: 2010-09-14 10:05

 急!!!!***关于3.5TFT液晶屏显示和jpg图片解码的问题***

***关于3.5TFT液晶屏显示和jpg图片解码的问题***
      现在需要在一个240*320分辨率,3.5寸的统宝TFT屏幕上显示jpg文件,Linux系统,使用了libjpeg共享库进行图片解码,屏幕为16色,但是实际屏幕中每个像素有两个颜色点,也就是说每个像素有两组RGB,所以如何将240*320的图片解码为480*320??
     显示屏的特性为:240*320分辨率,262144色。 这个液晶屏每个像素点上有两组RGB,16位色,RGB分别为565。我对100行像素写入二进制数11111000000000000000000000000000〔R1G0B0R0G0B0〕,接着100行像素写入二进制00000000000000001111100000000000〔R0G0B0R1G0B0〕,发现上半部分和下半部分图像不在一列,而且颜色发暗,放大后类似图片中的效果。

http://zhidao.baidu.com/question/183493576.html

    然后输出11111000000000001111100000000000〔R1G0B0R1G0B0〕,是鲜艳的红色,而且没有了黑色列。现在使用的图片解码库,是按240*320个像素点解码,直接将颜色值放到framebuffer里后屏幕上就是一列彩色、一列黑色间隔,整体感觉就是色彩不够鲜艳,而且不清晰。

    所以现在的问题就是如何让240*320分辨率的图片解码出480*320个像素值,把他们中两个16位RGB作为一组显示值放到一个像素点中,使图片显示更加清晰、鲜艳。
[ 此帖被zzkiy在2010-09-14 19:30重新编辑 ]
您还没有设置个性签名!
级别: 新手上路
UID: 24998
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2010-07-17
最后登录: 2010-11-06
1楼  发表于: 2010-09-14 10:39
高手们指点一下啊。。。。。困顿中。。。
级别: 新手上路
UID: 16042
精华: 0
发帖: 47
金钱: 245 两
威望: 49 点
综合积分: 94 分
注册时间: 2010-03-13
最后登录: 2012-03-23
2楼  发表于: 2010-09-24 10:54
这语言表达让我十分蛋疼.
原始图像只有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里就结了。
级别: 新手上路
UID: 29178
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
综合积分: 8 分
注册时间: 2010-09-24
最后登录: 2010-09-29
3楼  发表于: 2010-09-24 16:18
我也看的蛋疼了!
级别: 骑士
UID: 9169
精华: 0
发帖: 249
金钱: 1330 两
威望: 299 点
综合积分: 498 分
注册时间: 2009-09-19
最后登录: 2017-08-14
4楼  发表于: 2010-09-25 10:07
那你可以使用插值算法啊!