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

本帖最后由 勤奋的小青蛙 于 2017-6-22 09:00 编辑 显示一张图片到LCD上是不是会更有趣呢?今天就用 libSDL 来实现一下 一、先在Ubuntu上把源码写好,测试一下效果 Ubuntu12.04 32Bit LTS gcc 4.6.4 测试程序:show_bmp_file.c [code]/******************************************************** 文件名称: show_bmp_file.c ****** 程序功能: 显示一张bmp格式的图片到屏幕上 ****** 编写人员: frog ****** 编写时间: 2015-10-15 14:39:16 ****** 运行说明: 运行前设置环境变量export SDL_NOMOUSE=1 ****** *********************************************************/ #include #include "SDL/SDL.h" int main(int argc,char **argv) { if (argc != 2 ) { printf("Usage: %s xxx.bmp \n",argv[0]); return 0; } SDL_Surface * screen = NULL; SDL_Surface * image = NULL; //SDL初始化 if(SDL_Init(SDL_INIT_VIDEO)== -1) { printf("Initialize SDL error:%s \n",SDL_GetError()); return -1; } screen = SDL_SetVideoMode(480, 272, 32, SDL_SWSURFACE|SDL_ANYFORMAT); //设置了LCD最大能显示的分辨率 if(screen == NULL) { printf("Set 480*272*32 error: %s\n",SDL_GetError()); return -1; } ................................................ 帖子有字数限制,只好抄录部分代码,完整代码在附件中 ................................................ SDL_UpdateRect(screen, 0, 0, image->w, image->h); printf("Press any key to continue......"); getchar(); SDL_FreeSurface(image); SDL_FreeSurface(screen); SDL_Quit(); return 0; } [/code] 直接编译,看有什么错误提示[code]gcc show_bmp_file.c -o pc[/code] 出现错误:

error1.jpg

错误原因:没有安装libsdl库的头文件。 解决办法:使用下面的命令安装。 [code]sudo apt-get install libsdl1.2-dev[/code] 再次编译,有新的错误

error2.jpg

错误原因:函数的实现找不到 解决办法:加上要链接的库文件 [code]gcc show_bmp_file.c -o pc -lSDL[/code]成功生成了可执行程序

ok.jpg

执行一下 [code]./pc witcher.bmp[/code] 先在SecureCRT上看一下效果,隐约可以看到轮廓

crt.jpg

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

show1.jpg

二、将程序移植到JZ2440上 开发板:JZ2440 uboot 随意 kernel:Linux-3.4.2 编译器:arm-linux-gcc-4.3.2 为了省事,我直接使用了数码相框项目中现成的 [url=http://pan.baidu.com/s/1skGL9AP#list/path=%2F%E5%88%86%E4%BA%AB%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%2F007_%E9%9F%A6%E4%B8%9C%E5%B1%B1Linux_%E7%AC%AC3%E6%9C%9F%E8%A7%86%E9%A2%91_%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98(%E9%80%82%E7%94%A8%E4%BB%BB%E6%84%8FLinux%E6%9D%BF)%2F%E7%AC%AC1%E4%B8%AA%E9%A1%B9%E7%9B%AE_%E6%96%87%E4%BB%B6%E6%B5%8F%E8%A7%88%E5%99%A8_%E6%95%B0%E7%A0%81%E7%9B%B8%E6%A1%86%2F%E8%B5%84%E6%96%99%2F%E5%9B%BA%E4%BB%B6&parentPath=%2F]镜像文件[/url] 1.到官网下载 [url=http://www.libsdl.org/release/SDL-1.2.15.tar.gz]SDL-1.2.15.tar.gz[/url] [code]mm@ubuntu:~/jz2440$ mm@ubuntu:~/jz2440$ tar zxf SDL-1.2.15.tar.gz mm@ubuntu:~/jz2440$ cd SDL-1.2.15/ mm@ubuntu:~/jz2440/SDL-1.2.15$ ./configure --prefix=$PWD/../plugins --disable-pulseaudio --disable-joystick --disable-pulseaudio-shared --host=arm-linux mm@ubuntu:~/jz2440/SDL-1.2.15$ make && make install mm@ubuntu:~/jz2440/SDL-1.2.15$ cd .. mm@ubuntu:~/jz2440$ mm@ubuntu:~/jz2440$ cd app_test/ mm@ubuntu:~/jz2440/app_test$ arm-linux-gcc show_bmp_file.c -o show_bmp_file -I../plugins/include -L../plugins/lib -lSDL mm@ubuntu:~/jz2440/app_test$ mm@ubuntu:~/jz2440/app_test$ mm@ubuntu:~/jz2440/app_test$ ls -lh 总用量 12K -rwxrwxr-x 1 mm mm 7.2K 6月 19 14:47 show_bmp_file -rw-rw-r-- 1 mm mm 1.7K 6月 19 14:37 show_bmp_file.c mm@ubuntu:~/jz2440/app_test$[/code] 2.拷贝show_bmp_file和plugins 目录下的库文件到开发板,进行测试。 拷贝方法很多,选一种自己方便使用的即可。 [url=http://www.100ask.org/bbs/forum.php?mod=viewthread&tid=10604]http://www.100ask.org/bbs/forum.php?mod=viewthread&tid=10604[/url] 3.执行效果[size=13.3333px][code]./show_bmp_file witcher.bmp[/code]

show2.jpg

[code]./show_bmp_file newyear.bmp[/code]

show3.jpg

注意:如果运行测试程序时出现 Initialize SDL error:Unable to open mouse 需要先设置环境变量 [code]export SDL_NOMOUSE=1[/code] 备注:由于SDL原生只支持bmp图片,所以以上几个图片都是bmp格式。如果需要显示其它格式,需要添加其它库的支持,稍后你就会看到。 测试用的图片、源码和制作好的可执行程序及库如下:

show_bmp.tar.gz

请先 登录 后评论

4 个回答

小小鹏
666{:1_449:}
请先 登录 后评论
st_100ask
6666
请先 登录 后评论
勤奋的小青蛙
[quote][url=forum.php?mod=redirect&goto=findpost&pid=63656&ptid=18174]mjj1943@126.com 发表于 2017-6-21 10:57[/url] 看源码还要密码,差评[/quote] 已去掉权限,所有人皆可访问。
请先 登录 后评论
fengyuwuzu
6666666666666666666666
请先 登录 后评论
  • 0 关注
  • 0 收藏,1485 浏览
  • 勤奋的小青蛙 提出于 2017-06-19 16:24

相似问题