《使用第三方库来显示jpeg图片》
《使用第三方库来显示jpeg图片》
----------------------------------------------------------------------------------------------------------------
基于itop4412开发板 7寸屏 ubuntu14.4
----------------------------------------------------------------------------------------------------------------
一、文件
LCD ---> /dev/fb0
任务: jpeg ---> LCD
常见图片格式:jpg/png/bmp/gif
第三方源码库:jpegsrc.v9a.tar.gz ----> jpeg库: libjpeg.so (有很多接口文件)
二、实践步骤
1、把第三方库放置到共享目录中,我的路径:/mnt/hgfs/share/jpeg/
2、在linux中
cd root/experiment/jpeg/
cp /mnt/hgfs/share/jpeg/jpegsrc.v9a.tar.gz ./
3、解压jpeg库到linux中的某个文件夹中
(1)我的路径是/root/experiment/jpeg/
(2)tar zxvf jpegsrc.v9a.tar.gz
tar:解压或者压缩的命令
z:解压以.gz结尾的压缩包
x:解压的意思 c:压缩的意思
v:以可见的方式来进行解压
f:不可忽略文件
4、创建安装目录,并修改权限
mkdir /root/experiment/jpeg/jpeg
chmod 777 /root/experiment/jpeg/jpeg/
5、回到jpeg库顶层目录
cd /root/experiment/jpeg/jpeg-9a/
6、配置当前环境,看看是否允许安装该库
./configure --host=arm-linux --prefix=/root/experiment/jpeg/jpeg
./configure :执行库的配置文件
--host=arm-linux:指定编译的的工具链前缀
--prefix=/root/experiment/jpeg/jpeg :指定安装路径
检查以下的这句话是否为yes
checking whether we are cross compiling... yes
7、编译
make clean -->清除链接文件
make
8、安装(把提取出的文件放在/root/experiment/jpeg/jpeg/)
make install
9、检查是否安装成功
cd /root/experiment/jpeg/jpeg
ls
看到的文件夹如下:
bin:二进制文件
include :头文件
lib :库文件
share :帮助目录 --->安装成功
10、把libjpeg.so.9.1.0拷贝到共享目录
cp /root/experiment/jpeg/jpeg/lib/libjpeg.so.9.1.0 /mnt/hgfs/share/jpeg/
11、重命名共享目录中的libjpeg.so.9.1.0为libjpeg.so.9
原因->lib:库的前缀
jpeg:库的名字
so:库的后缀
9:版本号
1.0:修正号(没用)
12、编译jpeg_show.c
cd /mnt/hgfs/share/jpeg/
arm-linux-gcc jpeg_show.c -o jpeg_show -I /root/experiment/jpeg/jpeg/include/ -L /root/experiment/jpeg/jpeg/lib/ -ljpeg
注释: -I /root/experiment/jpeg/jpeg/include/:指定头文件路径
-L /root/experiment/jpeg/jpeg/lib/:指定库文件路径
-ljpeg:链接到库文件
13、把相关的文件下载开发板中
(1)需要下载的文件:libjpeg.so.9 jpeg_show xxx.jpg
(2)第一种下载方法:使用rz工具下载(itop4412的QT不支持,需要自己移植,方法看最后面)
在SecureCRT中输入命令:rz -y
(3)利用内存卡
1)查看板子有没有识别sd卡:fdisk -l
2)挂载sd卡:mount /dev/mmcblk1p1 /mnt/disk
3)完成复制后卸载sd卡:umount /mnt/disk
14、把libjpeg.so.9拷贝到根目录下得lib目录
cp libjpeg.so.9 /lib/
15、修改权限
chmod 777 jpeg_show
16、执行
./jpeg_show xxx.jpg
xxx.jpg:代表要显示的图片的名字,例如
./jpeg_show 6.jpg
17、修改jpeg_show.c后重新编译下载
(1)我想刷的是一张横屏的1280*800的图片,发现出现的图片和我所想的不一样,那是因为我们的屏幕是垂直像素分布的,默认是竖屏的。
(2)找到以下的函数,改成下面的样子
void write_lcd(unsigned char *bmp_buffer,
struct image_info *imageinfo,
char *FB, struct fb_var_screeninfo *vinfo)
{
bzero(FB, vinfo->xres * vinfo->yres * 4);
int x, y;
for(x=0; x<vinfo->yres && x<imageinfo->width; x++)
{
for(y=0; y<vinfo->xres && y<imageinfo->height; y++)
{
unsigned long lcd_offset = (vinfo->xres*x + y) * 4;
unsigned long bmp_offset = ( (imageinfo->height - 1 - y)*imageinfo->width+x) *
imageinfo->pixel_size;
memcpy(FB + lcd_offset + vinfo->red.offset/8,
bmp_buffer + bmp_offset + 0, 1);
memcpy(FB + lcd_offset + vinfo->green.offset/8,
bmp_buffer + bmp_offset + 1, 1);
memcpy(FB + lcd_offset + vinfo->blue.offset/8,
bmp_buffer + bmp_offset + 2, 1);
}
}
}
--------------------------------------------------------------------------------
关于串口传输工具rzsz,只需把编译好的rz、sz两个文件放到板子的/usr/bin 目录下即可。
相关的资料可以留言问我要。
2018/06/04
DGY(编)
《使用第三方库来显示jpeg图片》相关推荐
- ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析
视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...
- 信息学奥赛真题解析(玩具谜题)
玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...
- 信息学奥赛之初赛 第1轮 讲解(01-08课)
信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...
- 信息学奥赛一本通习题答案(五)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通习题答案(三)
最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...
- 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题
第1章 快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章 素数 第 3 章 约数 第 4 章 同余问题 第 5 章 矩阵乘法 第 6 章 ...
- 信息学奥赛一本通题目代码(非题库)
为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...
- 信息学奥赛一本通(C++版) 刷题 记录
总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...
- 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离
首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...
最新文章
- 变分自编码器VAE代码
- (已解决)AttributeError: ‘PrecisionRecallDisplay‘ has no attribute ‘from_predictions‘以及查看sklearn版本
- 华为数据之道_华为规划的数字世界是什么样子的?
- 使用汇编软件emu8086输出十次Hello World!
- linux下的ssh和rynsc
- 解决问题的经验-javaweb-第一次-已掌握技术栈大致总结(部分),和相关理解,总结,以及对未来学习方向的规划
- cocos2d-x游戏实例(10)-塔防游戏(修改地图图素,地图整体缩放)
- tcpdump 抓二层包_可能是我见过的最简单易懂且实用的 TCPDump 和 Wireshark 抓包及分析教程!( 强烈建议收藏 )...
- Linux命令整合之find
- 【转载】Windows自带.NET Framework版本大全
- AgileEAS.NET之数据关系映射ORM
- Python学习笔记:交互对话环境IPython
- Confluence 6 目录中的数据库
- [PHP]Yii rules常用规则
- SpringBoot配置文件实现数据库连接
- Android 自定义View实现拖动滑块完成验证
- 王者战力查询接口,四大战区(文字版)
- Java | 仓库管理系统demo
- farm together(一起玩农场)奖励物品代码(截止2021.2.10)
- HTML语言分栏左右比例怎么调整,wps怎么设置分栏排版?