绪论
Heic文件转jpg纯java实现一文中说明了libheif是解决heic转jpg的唯一标准答案。由于我的操作系统是centos7,默认的yum仓库里面的rpm包版本都是低于1.6的,不能支持heic的高级特性。所以本文将直接从源码打包安装libheif。
1.安装gcc 11
由于libheif库需要的版本为gcc 11以上,所以需要先安装gcc。
1.1 安装 SCL (Software Collections)
sh
yum install -y centos-release-scl centos-release-scl-rh
sudo yum-config-manager --add-repo=https://vault.centos.org/7.9.2009/sclo/x86_64/rh/
sudo yum-config-manager --enable sclo-rh
1.2 修改仓库默认地址
sh
vi /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
改成
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-rh
baseurl=http://vault.centos.org/7.9.2009/sclo/$basearch/rh/
sh
vi /etc/yum.repos.d/CentOS-SCLo-scl.repo(如果为空可以不改)
改成
#mirrorlist=http://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo
baseurl=http://vault.centos.org/7.9.2009/sclo/$basearch/sclo/
重构缓存
sh
yum clean all
yum makecache
1.3 安装gcc
sh
yum install -y devtoolset-11-gcc devtoolset-11-gcc-c++
1.4 执行scl
sh
scl enable devtoolset-11 bash
which gcc
2.安装libde265
2.1 下载源码包
sh
wget https://github.com/strukturag/libde265/archive/refs/tags/v1.0.12.tar.gz
tar -zxvf v1.0.12.tar.gz
cd libde265-1.0.12
2.2 新建build文件
打开libde265源码目录
sh
mkdir build
cd build
2.3 编译(目录放在/data01/libde265_install下,后面libheif安装会用)
这里cmake我是无网安装的,使用的绝对路径
sh
/data01/cmake-3.31.11/bin/cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/data01/libde265_install
2.4 打包 & 安装
sh
make
make install
3.安装libheif
3.1 下载源码包
sh
# 下载源码包(需要大于1.18.0才能支持新特性)
wget https://github.com/strukturag/libheif/archive/refs/tags/v1.20.0.tar.gz
# 解压
tar -zxvf v1.17.0.tar.gz
cd libheif-1.17.0
3.2 新建build文件
打开libheif源码目录
sh
mkdir build
cd build
3.3 安装依赖包(cmake可以直接源码安装)
sh
yum install cmake git pkgconfig zlib-devel libjpeg-turbo-devel libpng-devel \
libtiff-devel openjpeg2-devel -y
3.4 编译
sh
/data01/cmake-3.31.11/bin/cmake \
-DCMAKE_INSTALL_PREFIX=/data01/lib_install \
-DCMAKE_PREFIX_PATH=/data01/lib_install \
-DCMAKE_C_COMPILER=/opt/rh/devtoolset-11/root/usr/bin/gcc \
-DCMAKE_CXX_COMPILER=/opt/rh/devtoolset-11/root/usr/bin/g++ \
-DCMAKE_CXX_STANDARD=20 \
-DCMAKE_CXX_STANDARD_REQUIRED=ON \
-DENABLE_EXAMPLES=OFF \
-DENABLE_TESTS=OFF \
-DENABLE_TOOLS=ON \
-DLIBDE265_ROOT=/data01/libde265_install \
-DX265_ROOT=/data01/libde265_install \
-DAOM_ROOT=/data01/lib_install \
-DPNG_PNG_INCLUDE_DIR=/usr/include \
-DPNG_LIBRARY=/usr/lib64/libpng.so \
-DJPEG_INCLUDE_DIR=/usr/include \
-DJPEG_LIBRARY=/usr/lib64/libjpeg.so \
..
其中DLIBDE265_ROOT为前面libde265的安装位置
3.5 打包 & 安装
sh
make
make install
3.6 拷贝lib265的so文件到libheif下面
主要是让libheif的bin文件能够访问到libde265的lib库
sh
cp /data01/libde265_install/lib64/libde265.so libde265.so
4.执行命令(转换命令)
sh
LD_LIBRARY_PATH=/data01/lib_install/lib64 /data01/lib_install/bin/heif-convert /data01/2.heic /data01/22_2.jpg
5.二进制文件使用
5.1 修改docker file 安装依赖文件
sh
yum install cmake git pkgconfig zlib-devel libjpeg-turbo-devel libpng-devel \
libtiff-devel openjpeg2-devel -y
5.2 拷贝二进制包到/data01
5.3 执行命令
sh
LD_LIBRARY_PATH=/data01/lib_install/lib64 /data01/lib_install/bin/heif-convert /data01/2.heic /data01/22_2.jpg