皮尔斯 发表于 2019-1-27 18:36:08

linux交叉编译jpeg库——显示jpeg图片

Linux下交叉编译jpeg库的安装使用经验分享
任务目标:要在lcd显示屏上显示一张jpeg图片
使用开发板:iTop4412精英板

一.安装ARM平台下的jpeg库

1.从网路上下载到jpegsrc.v9c.tar.gz(不要下载成.zip后缀的,那是windows平台的)    下载链接:http://www.ijg.org
   下载libtool.2.4.6,下载链接:https://www.gnu.org/software/libtool/   
在百度搜索的话大部分都是CSDN下载,要下载积分才能下载。其实外国的免费资料非常多,可以通过必应国际版搜索 xxxxx download,很多在国内网站下载要钱的资料在外国网站都可以找到免费的。

2.在ubuntu下新建一个安装目录,我的目录是/root/experiment/jpeg/jpeg
3.将下载好的jpegsrc.v9c.tar.gz和libtool.2.4.6拷贝到自己喜欢的目录下,分别输入指令tar zxvf jpegsrc.v9c.tar.gz和 tar zxvf libtool.2.4.6解压压缩包。
4.进入libtool.2.4.6的解压目录,执行“./configure --host=arm-none-linux-gnueabi”,配置完成环境后”make”一下,编译完成后把绿色的“libtool”文件copy到前面jpegsrc.v9c.tar.gz的解压文件里面。
5.mkdir创建文件夹/root/experiment/jpeg/jpeg
6.接着进入jpegsrc.v9c.tar.gz的解压文件里,行./configure--host=arm-none-linux-gnueabi --prefix=/root/experiment/jpeg/jpeg,这时/root/experiment/jpeg/jpeg目录下生成了几个子文件夹
7.在jpegsrc解压文件里我们还需要配置他的Makefile文件,进行如下修改sudo gedit Makefile,“CC= arm-none-linux-gnueabi-gcc”;“AR= arm-none-linux-gnueabi-ar rc”;“AR2= arm-none-linux-gnueabi-ranlib”,不存在的项就不用改了。
8.最后执行make编译,再安装库make install。这时在/root/experiment/jpeg/jpeg/lib下生成.so的库文件,执行file libjpeg.so.9.1.0,查看文件是不是ARM平台下的。
9.对写好的app文件编译 arm-none-linux-gnueabi-gcc lcd_show_jpeg.c -o lcd_show_jpeg -I /home/linuxSystemCode/lcd/simplelcd/include/ -L /lib -ljpeg


下面是jpeg图片显示的效果,色彩比bmp漂亮好多

皮尔斯 发表于 2019-1-27 18:38:15

附上代码,刚学嵌入式Linux没多久,虽然没多少技术含量{:lol:}

huangqi412 发表于 2019-1-27 18:47:10

皮尔斯 发表于 2019-1-27 18:38
附上代码,刚学嵌入式Linux没多久,虽然没多少技术含量

为啥效果比bmp好

dragonlands 发表于 2019-1-27 18:56:09

皮尔斯 发表于 2019-1-27 18:38
附上代码,刚学嵌入式Linux没多久,虽然没多少技术含量

同问,为什么JPEG的效果比BMP好?
BMP是无损图片格式,JPEG是经过DCT变换的有损压缩格式,难道说你的BMP显示是的凤姐,JPEG显示的是林志玲?

hexenzhou 发表于 2019-1-27 19:22:30

哈哈

皮尔斯 发表于 2019-1-27 19:51:09

dragonlands 发表于 2019-1-27 18:56
同问,为什么JPEG的效果比BMP好?
BMP是无损图片格式,JPEG是经过DCT变换的有损压缩格式,难道说你的BMP ...

对啊,bmp图片看起来白白的,像素点也不是很精致。但是jpeg显示出来颜色很鲜艳,像素点也不明显。是我bmp显示有问题吗

皮尔斯 发表于 2019-1-27 19:51:32

huangqi412 发表于 2019-1-27 18:47
为啥效果比bmp好

对啊,bmp图片看起来白白的,像素点也不是很精致。但是jpeg显示出来颜色很鲜艳,像素点也不明显,是我的bmp显示的问题吗

boyiee 发表于 2019-1-27 21:03:16

图像效果跟存储格式毫无关系,,,,纯心里作用哈哈哈{:loveliness:}

john78 发表于 2019-1-27 21:15:33

真正考虑嵌入中使用jpg ,主要是bmp太占内存

libtool是否是非必须的?可以直接将jpegsrc编译进自己的代码?

皮尔斯 发表于 2019-1-27 21:17:32

john78 发表于 2019-1-27 21:15
真正考虑嵌入中使用jpg ,主要是bmp太占内存

libtool是否是非必须的?可以直接将jpegsrc编译进自己的代码? ...

那也可以,直接下载别人做好的库,放到/lib目录下

皮尔斯 发表于 2019-1-27 21:19:18

dragonlands 发表于 2019-1-27 18:56
同问,为什么JPEG的效果比BMP好?
BMP是无损图片格式,JPEG是经过DCT变换的有损压缩格式,难道说你的BMP ...

大哥,如果要把摄像头的图像也显示到lcd,格式要怎么转换呢{:shocked:}

john78 发表于 2019-1-27 21:25:08

皮尔斯 发表于 2019-1-27 21:17
那也可以,直接下载别人做好的库,放到/lib目录下

谢谢,刚开始弄linux,还没有研究过库,我的意思是否可以直接将这个jpg的源码和自己的代码一起编译,看到这个文件夹下,好多不知道干嘛的扩展名的文件,不理解

皮尔斯 发表于 2019-1-27 21:59:11

john78 发表于 2019-1-27 21:25
谢谢,刚开始弄linux,还没有研究过库,我的意思是否可以直接将这个jpg的源码和自己的代码一起编译,看到 ...

不能直接编,前提你的系统库里有jpeglib动态库,才可以。库的安装方法如本帖,我弄了好多天,终于搞定了,所以发出来哈哈,我也是新手

jordonwu 发表于 2019-1-27 22:06:02

上Yocto吧,不然你缺一个库搞几天

dragonlands 发表于 2019-1-27 22:29:56

皮尔斯 发表于 2019-1-27 21:19
大哥,如果要把摄像头的图像也显示到lcd,格式要怎么转换呢

摄像头进来的格式一般是YUV4:2:2,JPEG的色彩空间大多也是YUV。

皮尔斯 发表于 2019-1-28 08:52:50

dragonlands 发表于 2019-1-27 22:29
摄像头进来的格式一般是YUV4:2:2,JPEG的色彩空间大多也是YUV。

但是摄像头輸出YUV4:2:2不是mjpeg,没办法直接使用jpeg lib呀
页: [1]
查看完整版本: linux交叉编译jpeg库——显示jpeg图片