说明

在JZ2440上显示自己的图片,全屏显示。已知分辨率是480*272,为了适应lcd的大小,又不使图片变形,需要对图片进行分辨率调整并裁剪,这里用到windows的自带画图工具。需要获得图片的像素数据,用python的PIL库对图片进行像素提取。

硬件平台

主板:JZ2440
主控芯片:S3C2440A
LCD型号:AT043TN24 V.1
分辨率:480x272
像素:24bpp
像素格式:0XRRGGBB

图片的裁剪

原始图片如下:

分辨率为:4032*3024
打开画图工具,对图片进行裁剪,保持图片比例,将水平分辨率调整为480,则垂直分辨率变为360,如图所示:

然后对图片进行矩形选择,选择480*272的尺寸:

然后点击【裁剪】,保存图片后就得到分辨率为480*272的图片。

用python提取图片的像素数据

将新图片命名为4.jpg,python代码如下:

from PIL import Image
img=Image.open("4.jpg","r")
print(img.size)
width,height=img.size
file = "hexbpp.txt"
out="const unsigned int bppColor[]=\n{\n"
for y in range(0,272):for x in range(0,480):r,g,b=img.getpixel((x,y))px=hex(r<<16|g<<8|b)out+=str(px)+","out+='\n'out+="};\n"
with open(file,'w') as f:f.write(out)

生成的是.txt文件,不过可以直接生成.c文件,将这个.c文件添加到工程里并用头文件声明这个数组就可以用了。
注意:该数据文件比较大,内存较少的电脑代开容易卡顿。
python代码的编写参考这里:http://www.cnblogs.com/ningci/p/5203053.html
不过这个是python2的代码,需要做一些调整才能用。

显示图片的核心代码

void showPicture(void) {int x, y;fb_get_lcd_params();    //得到fb_base, xre, yrex, bpp数据for (y = 0; y < 272; y++) {for (x = 0; x < 480; x++) {fb_put_pixel(x, y, bppColor[y*xres + x]);}}
}
void fb_put_pixel(int x, int y, unsigned int color) {unsigned char *pc;  //8bpp, charunsigned short *ph; //16bpp, halt wordunsigned int *pw; //32bpp, wordunsigned int pixel_base = fb_base + (xres*bpp / 8)*y + x*bpp / 8;switch (bpp){case 8:   pc = (unsigned char *)pixel_base;  *pc = color; break;case 16:ph = (unsigned short *)pixel_base; *ph = convert32bppto16bpp(color); break;case 32:pw = (unsigned int *)pixel_base;  *pw = color; break;default:break;}
}

这里没有24bpp的情形,因为对于32bpp和24bpp处理过程是一样的。

图片的显示效果

注意事项

最后生成的bin文件有500多K,用EOP烧写的话需要好几分钟,非常不便于调试。可以改用uboot通过DNW下载,速度非常快,但是uboot下载出现的问题是文件太大,不能全部烧写进去。若上一次显示的是A图,这次要显示B图,则将B图的bin文件下载进去后,屏幕显示的是上半部分是B图下半部分是A图。

4.3寸TFTLCD显示JPG图片相关推荐

  1. 0.96寸OLED显示汉字图片及简单GIF

    0.96寸OLED显示汉字图片及简单GIF 只是做一些简单显示,具体逻辑大家自行添加. 网上的OLED驱动很多,我懂的也不是很深,这里就不说了,我这里用的是中景园的驱动.这里重点说怎么改可以显示这些东 ...

  2. 普中stm32开发板tftlcd显示图片_STM32实例TFTLCD介绍

    以前我们用 51 单片机控制 TFTLCD(TFT 液晶屏)时,使用的是 IO 口模拟80 接口时序.这次我们来学习如何使用 STM32F1 的 FSMC(灵活的静态存储控制器)接口控制 TFTLCD ...

  3. 物联网开发笔记(64)- 使用Micropython开发ESP32开发板之控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程:控件显示

    一.目的 这一节我们学习如何使用我们的ESP32开发板来控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程:控件显示. 二.环境 ESP32 + ILI9341 3.2寸TFT-L ...

  4. 物联网开发笔记(63)- 使用Micropython开发ESP32开发板之控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程:显示中文

    一.目的 这一节我们学习如何使用我们的ESP32开发板来控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程的第一步:显示中文. 二.环境 ESP32 + 3.2寸 ILI9341触 ...

  5. 0.96寸OLED显示汉字,数字,英文,图片,GIF动画+取模软件使用+代码解析

    前言 本次我们学习一下STM32F103关于OLED显示汉字,数字,英文,图片,GIF动画,和介绍各种取模软件的使用,主要教会大家使用和修改OLED驱动的代码,对汉字大小,图片分辨率进行代码修改并显示 ...

  6. 0.96寸OLED显示图片

    先看效果 因为之前在项目中OLED一般只显示字符,今天闲来无事了解了一下取模功能,话不多说,直接开始教学. 首先寻找一张你想显示的图片 使用画图打开(重新调整大小,128乘以64) 接着保存,注意是以 ...

  7. STM32F103 TFTLCD显示实验(一)

    文章内容 本文将介绍有关TFTLCD的有关知识,包括几个部分,分别如下: TFTLCD简介 相关指令 配置步骤 FSMC简介 由于篇幅过长,因此,代码讲解放到下一章中,链接如下: STM32F103 ...

  8. stm32miniLCD(TFTLCD显示原理和LCD液晶显示)——HAL库

    目录 前言 模块简介 模块原理 驱动 指令简介 LCD液晶显示实验 TFTLCD初始化函数 几个函数 前言 简单说一下OLED和LCD的区别(因为学习的时候想知道为什么要学两个功能相似的外设).LCD ...

  9. 《使用第三方库来显示jpeg图片》

    <使用第三方库来显示jpeg图片> ---------------------------------------------------------------------------- ...

  10. 物联网开发笔记(62)- 使用Micropython开发ESP32开发板之控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程:环境搭建

    一.目的 这一节我们学习如何使用我们的ESP32开发板来控制ILI9341 3.2寸TFT-LCD触摸屏进行LVGL图形化编程的第一步:环境搭建. 关键字:3.2寸SPI串口TFT液晶显示屏模块 IL ...

最新文章

  1. 首次在手机端不牺牲准确率实现BERT实时推理,比TensorFlow-Lite快近8倍,每帧只需45ms...
  2. Django models部分,数据库建立,错误解决
  3. PHP在函数体中传递与接收参数
  4. 维护索引——通过重组索引提高性能
  5. 纯CSS实现iframe高度自适应,完美兼容各种浏览器,同域异域
  6. SAP Hybris MVC里的M指什么
  7. 软件设计的第一性原理:结构化抽象
  8. oracle的工具cmd,数据库命令行工具DBCLI
  9. “哪里有人喜欢孤独,不过是害怕失望罢了”———村上春树《东尼泷谷》观后感...
  10. redis10--主从模式
  11. 苹果秋季新品发布会终于官宣:然而并不会发布新iPhone?
  12. mybatis问题。foreach循环遍历数组报错情况,及其解决方法
  13. python内置函数每个执行一次
  14. 速锐得驾培驾考免接线OBD数据价值及发展思路
  15. 监控网站与接口宕机,并推送 App 消息提醒的程序
  16. iOS13适配暗黑模式/夜间模式/深色模式/暗黑主题(DarkMode)
  17. 微型计算机步进电机控制,使用微机对步进电机进行控制方式主要有两种
  18. 晨光计算机里的铃声是什么歌曲,soul app里的音乐有哪些?soul app里的铃声有哪些?[图]...
  19. 电影《暮光之城》不得不爱
  20. go.js 删除节点

热门文章

  1. Ubuntu 18.04 ibus安装配置中文拼音输入法
  2. 量子计算机epr,从EPR到量子信息[转] - 物理 - 小木虫 - 学术 科研 互动社区
  3. 位操作的应用实例(2)位掩码
  4. 敏捷团队中有效沟通的5种模式
  5. 游戏启动流程的逆向分析与多开的实现
  6. CnOpenData中国行政区划数据简介
  7. 你还记得远古时代的拨号上网么?快来了解拨号上网与宽带上网的区别
  8. WHENet: Real-time Fine-Grained Estimation for Wide Range Head Pose
  9. 虎虎生威—新年版本(鼠标超人、烟花、浮动会闪的星星以及闪避值拉满的老虎)
  10. golang base64解码编码实现