官方QQ群收藏本站

百问linux嵌入式论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1089|回复: 4

【教程】如何快速显示图片到LCD

[复制链接]

46

主题

1510

帖子

2万

积分

论坛元老

Rank: 8Rank: 8

积分
26895
发表于 2017-6-19 16:24:30 | 显示全部楼层 |阅读模式
本帖最后由 勤奋的小青蛙 于 2017-6-22 09:00 编辑

显示一张图片到LCD上是不是会更有趣呢?今天就用 libSDL 来实现一下

一、先在Ubuntu上把源码写好,测试一下效果

Ubuntu12.04 32Bit LTS
gcc 4.6.4

测试程序:show_bmp_file.c
  1. /********************************************************
  2. 文件名称: show_bmp_file.c                           ******
  3. 程序功能: 显示一张bmp格式的图片到屏幕上                 ******
  4. 编写人员: frog                                      ******
  5. 编写时间: 2015-10-15 14:39:16                       ******
  6. 运行说明: 运行前设置环境变量export SDL_NOMOUSE=1       ******
  7. *********************************************************/
  8. #include <stdio.h>
  9. #include "SDL/SDL.h"

  10. int main(int argc,char **argv)
  11. {
  12.   if (argc != 2 )
  13.   {
  14.      printf("Usage: %s xxx.bmp \n",argv[0]);
  15.      return 0;
  16.   }
  17.   
  18.     SDL_Surface * screen  = NULL;
  19.     SDL_Surface * image = NULL;

  20.     //SDL初始化
  21.     if(SDL_Init(SDL_INIT_VIDEO)== -1)
  22.     {
  23.         printf("Initialize SDL error:%s \n",SDL_GetError());
  24.         return -1;
  25.     }
  26.     screen = SDL_SetVideoMode(480, 272, 32, SDL_SWSURFACE|SDL_ANYFORMAT); //设置了LCD最大能显示的分辨率
  27.     if(screen == NULL)
  28.     {
  29.         printf("Set 480*272*32 error: %s\n",SDL_GetError());
  30.         return -1;
  31.     }
  32.     ................................................
  33.     帖子有字数限制,只好抄录部分代码,完整代码在附件中
  34.     ................................................
  35.     SDL_UpdateRect(screen, 0, 0, image->w, image->h);
  36.    
  37.     printf("Press any key to continue......");
  38.     getchar();
  39.    
  40.     SDL_FreeSurface(image);
  41.     SDL_FreeSurface(screen);
  42.     SDL_Quit();
  43.     return 0;
  44. }
复制代码

直接编译,看有什么错误提示
  1. gcc show_bmp_file.c -o pc
复制代码

出现错误:
error1.jpg


错误原因:没有安装libsdl库的头文件。
解决办法:使用下面的命令安装。

  1. sudo apt-get install libsdl1.2-dev
复制代码


再次编译,有新的错误
error2.jpg



错误原因:函数的实现找不到
解决办法:加上要链接的库文件
  1. gcc show_bmp_file.c -o pc -lSDL
复制代码
成功生成了可执行程序
ok.jpg


执行一下
  1. ./pc witcher.bmp
复制代码

先在SecureCRT上看一下效果,隐约可以看到轮廓

crt.jpg


登录到Ubuntu的图形界面下看看效果

show1.jpg



二、将程序移植到JZ2440上


开发板:JZ2440
uboot 随意
kernel:Linux-3.4.2
编译器:arm-linux-gcc-4.3.2

为了省事,我直接使用了数码相框项目中现成的 镜像文件


1.到官网下载 SDL-1.2.15.tar.gz
  1. mm@ubuntu:~/jz2440$
  2. mm@ubuntu:~/jz2440$ tar zxf SDL-1.2.15.tar.gz
  3. mm@ubuntu:~/jz2440$ cd SDL-1.2.15/
  4. mm@ubuntu:~/jz2440/SDL-1.2.15$ ./configure --prefix=$PWD/../plugins  --disable-pulseaudio --disable-joystick --disable-pulseaudio-shared  --host=arm-linux
  5. mm@ubuntu:~/jz2440/SDL-1.2.15$ make && make install
  6. mm@ubuntu:~/jz2440/SDL-1.2.15$ cd ..
  7. mm@ubuntu:~/jz2440$
  8. mm@ubuntu:~/jz2440$ cd app_test/
  9. mm@ubuntu:~/jz2440/app_test$ arm-linux-gcc show_bmp_file.c -o show_bmp_file -I../plugins/include -L../plugins/lib -lSDL
  10. mm@ubuntu:~/jz2440/app_test$
  11. mm@ubuntu:~/jz2440/app_test$
  12. mm@ubuntu:~/jz2440/app_test$ ls -lh
  13. 总用量 12K
  14. -rwxrwxr-x 1 mm mm 7.2K  6月 19 14:47 show_bmp_file
  15. -rw-rw-r-- 1 mm mm 1.7K  6月 19 14:37 show_bmp_file.c
  16. mm@ubuntu:~/jz2440/app_test$
复制代码

2.拷贝show_bmp_file和plugins  目录下的库文件到开发板,进行测试。
拷贝方法很多,选一种自己方便使用的即可。
http://www.100ask.org/bbs/forum.php?mod=viewthread&tid=10604

3.执行效果[size=13.3333px]
  1. ./show_bmp_file witcher.bmp
复制代码

show2.jpg


  1. ./show_bmp_file newyear.bmp
复制代码


show3.jpg





注意:如果运行测试程序时出现 Initialize SDL error:Unable to open mouse
需要先设置环境变量

  1. export SDL_NOMOUSE=1
复制代码

备注:由于SDL原生只支持bmp图片,所以以上几个图片都是bmp格式。如果需要显示其它格式,需要添加其它库的支持,稍后你就会看到。

测试用的图片、源码和制作好的可执行程序及库如下:


show_bmp.tar.gz (984.32 KB, 下载次数: 173)
韦东山视频开发板购买店铺:https://100ask.taobao.com
微信公众平台:baiwenkeji
有问题,不要发私信,直接在帖子下方留言,每天都会查看的。
回复

使用道具 举报

46

主题

1510

帖子

2万

积分

论坛元老

Rank: 8Rank: 8

积分
26895
 楼主| 发表于 2017-6-22 18:37:47 | 显示全部楼层
mjj1943@126.com 发表于 2017-6-21 10:57
看源码还要密码,差评

已去掉权限,所有人皆可访问。
韦东山视频开发板购买店铺:https://100ask.taobao.com
微信公众平台:baiwenkeji
有问题,不要发私信,直接在帖子下方留言,每天都会查看的。
回复 支持 反对

使用道具 举报

11

主题

341

帖子

1042

积分

金牌会员

Rank: 6Rank: 6

积分
1042
发表于 2017-6-23 11:08:00 | 显示全部楼层
6666666666666666666666
回复 支持 反对

使用道具 举报

技术支持
在线咨询
咨询热线
0755-86200561
微信扫一扫
获取更多资讯!

Archiver|小黑屋|百问linux嵌入式论坛     

GMT+8, 2020-2-29 22:02 , Processed in 0.103673 second(s), 12 queries , File On.

Powered by Discuz! X3.3 Licensed

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表