《使用第三方库来显示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图片》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. 变分自编码器VAE代码
  2. (已解决)AttributeError: ‘PrecisionRecallDisplay‘ has no attribute ‘from_predictions‘以及查看sklearn版本
  3. 华为数据之道_华为规划的数字世界是什么样子的?
  4. 使用汇编软件emu8086输出十次Hello World!
  5. linux下的ssh和rynsc
  6. 解决问题的经验-javaweb-第一次-已掌握技术栈大致总结(部分),和相关理解,总结,以及对未来学习方向的规划
  7. cocos2d-x游戏实例(10)-塔防游戏(修改地图图素,地图整体缩放)
  8. tcpdump 抓二层包_可能是我见过的最简单易懂且实用的 TCPDump 和 Wireshark 抓包及分析教程!( 强烈建议收藏 )...
  9. Linux命令整合之find
  10. 【转载】Windows自带.NET Framework版本大全
  11. AgileEAS.NET之数据关系映射ORM
  12. Python学习笔记:交互对话环境IPython
  13. Confluence 6 目录中的数据库
  14. [PHP]Yii rules常用规则
  15. SpringBoot配置文件实现数据库连接
  16. Android 自定义View实现拖动滑块完成验证
  17. 王者战力查询接口,四大战区(文字版)
  18. Java | 仓库管理系统demo
  19. farm together(一起玩农场)奖励物品代码(截止2021.2.10)
  20. HTML语言分栏左右比例怎么调整,wps怎么设置分栏排版?

热门文章

  1. 【小黑屋】——总结反馈
  2. OSRM开源地图导航引擎介绍一
  3. 绘画板绘-小白画线不稳怎么办?
  4. 自己动手编写仿QQ的app -1注册界面by sdust iot zhl
  5. SSH远程ubuntu【无公网IP、内网穿透】 3-3
  6. 力扣-718最长重复子数组(dp)
  7. mysql笔试题一:查询where having 以及统计函数的使用
  8. 凯云水利水电工程造价管理系统 技术解析(七) 机械单价(二)
  9. html页面放大缩小样式不变,网页缩小放大后错位的解决方法
  10. java 绘制图形实验心得体会_绘图实习心得体会3篇