使用libjpeg

目录

1 说明

2 在PC linux(Ubuntu 1604 server)使用libjpeg

2.1 移植

2.2 使用命令行

2.3 使用api

3 在Hi3518ev300使用libjpeg

3.1 移植

3.2 使用命令行

3.3 使用api


1 说明

libjpeg可用来转换图片格式,比如BMP转JPEG、JPEG转PGM等。用于UNIX-like系统。

可以从官网下载最新的版本,也可以在百度网盘下载源码包和测试文件。

链接:https://pan.baidu.com/s/1LYt542WqChuXFJzlB9qJXQ

提取码:2ufb

2 在PC linux(Ubuntu 1604 server)使用libjpeg

2.1 移植

tar xzf jpegsrc.v9c.tar.gz
cd jpeg-9c/
./configure

make,生成cjpeg(用来生成JPEG格式文件)、djpeg(用来解压JPEG格式文件)、jpegtran(用来旋转、缩放JPEG图片等)等可执行程序。

2.2 使用命令行

网盘压缩包testPIC1_Ubuntu.rar里面有BMP、JPEG图片用于测试。

./djpeg -bmp -outfile test1_.bmp test1.jpg,将test1.jpg解压并保存到test1_.bmp

./djpeg -grayscale -outfile test1_.pgm test1.jpg,将test1.jpg解压并保存到test1_.pgm

./cjpeg -rgb -outfile test1_.jpg test1.bmp,将test1.bmp压缩并保存到test1_.jpg

./jpegtran -rotate 90 -outfile test1_1.jpg test1_.jpg,将test1_.jpg旋转90度并保存到test1_1.jpg

2.3 使用api

查看安装包的Makefile,可以看到所以编译源文件、可执行程序依赖的源文件等。

需要将${LIBSOURCES}的所有源文件编译成库文件(libjpeg.a)。

ar crsv libjpeg.a jaricom.o jcapimin.o jcapistd.o jcarith.o jccoefct.o jccolor.o jcdctmgr.o jchuff.o jcinit.o jcmainct.o jcmarker.o jcmaster.o jcomapi.o jcparam.o jcprepct.o jcsample.o jctrans.o jdapimin.o jdapistd.o jdarith.o jdatadst.o jdatasrc.o jdcoefct.o jdcolor.o jddctmgr.o jdhuff.o jdinput.o jdmainct.o jdmarker.o jdmaster.o jdmerge.o jdpostct.o jdsample.o jdtrans.o jerror.o jfdctflt.o jfdctfst.o jfdctint.o jidctflt.o jidctfst.o jidctint.o jquant1.o jquant2.o jutils.o jmemmgr.o jmemnobs.o

在使用api时,以djpeg为例,只需将${djpeg_SOURCES}的源文件以源代码的形式编译到可执行程序中,需要注意的是要将djpeg.c的main函数适当修改和包含相关头文件。网盘中test1_Ubuntu.rar包含测试用的文件。

gcc main.c djpeg.c wrppm.c wrgif.c wrtarga.c wrrle.c wrbmp.c rdcolmap.c cdjpeg.c libjpeg.a -o test
root@ubuntu:/home/lijun/USE_libjpeg/test1# valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all ./test
==5180== Memcheck, a memory error detector
==5180== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==5180== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==5180== Command: ./test
==5180== 
main.c 29, ret=0
==5180== 
==5180== HEAP SUMMARY:
==5180==     in use at exit: 0 bytes in 0 blocks
==5180==   total heap usage: 21 allocs, 21 frees, 154,984 bytes allocated
==5180== 
==5180== All heap blocks were freed -- no leaks are possible
==5180== 
==5180== For lists of detected and suppressed errors, rerun with: -s
==5180== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

同理,使用cjpeg时,只需将${cjpeg_SOURCES}的源文件以源代码的形式编译到可执行程序中,需要注意的是要将cjpeg.c的main函数适当修改和包含相关头文件。网盘中test2_Ubuntu.rar包含测试用的文件。

gcc main.c cjpeg.c rdppm.c rdgif.c rdtarga.c rdrle.c rdbmp.c rdswitch.c cdjpeg.c libjpeg.a -o test
root@ubuntu:/home/lijun/USE_libjpeg/test2# valgrind --tool=memcheck --leak-check=full --show-leak-kinds=all ./test
==5218== Memcheck, a memory error detector
==5218== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==5218== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==5218== Command: ./test
==5218== 
main.c 29, ret=0
==5218== 
==5218== HEAP SUMMARY:
==5218==     in use at exit: 0 bytes in 0 blocks
==5218==   total heap usage: 23 allocs, 23 frees, 72,560 bytes allocated
==5218== 
==5218== All heap blocks were freed -- no leaks are possible
==5218== 
==5218== For lists of detected and suppressed errors, rerun with: -s
==5218== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

3 在Hi3518ev300使用libjpeg

3.1 移植

tar xzf jpegsrc.v9c.tar.gz
cd jpeg-9c/
./configure --prefix=$PWD CC=arm-himix100-linux-gcc --host=arm

make,生成cjpeg(用来生成JPEG格式文件)、djpeg(用来解压JPEG格式文件)、jpegtran(用来旋转、缩放JPEG图片等)等可执行程序。

3.2 使用命令行

跟在PC linux使用方式一样。

3.3 使用api

跟在PC linux使用方式一样。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ta是一个搬运工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值