Heic文件转jpg标准解决方案(libheif安装)

绪论

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
相关推荐
mCell4 小时前
如何零成本搭建个人站点
前端·程序员·github
YJlio5 小时前
1.7 通过 Sysinternals Live 在线运行工具:不下载也能用的“云端工具箱”
c语言·网络·python·数码相机·ios·django·iphone
青云计划6 小时前
知光项目知文发布模块
java·后端·spring·mybatis
赶路人儿6 小时前
Jsoniter(java版本)使用介绍
java·开发语言
探路者继续奋斗7 小时前
IDD意图驱动开发之意图规格说明书
java·规格说明书·开发规范·意图驱动开发·idd
消失的旧时光-19437 小时前
第十九课:为什么要引入消息队列?——异步系统设计思想
java·开发语言
A懿轩A7 小时前
【Java 基础编程】Java 面向对象入门:类与对象、构造器、this 关键字,小白也能写 OOP
java·开发语言
乐观勇敢坚强的老彭8 小时前
c++寒假营day03
java·开发语言·c++
biubiubiu07068 小时前
谷歌浏览器无法访问localhost:8080
java
大黄说说8 小时前
新手选语言不再纠结:Java、Python、Go、JavaScript 四大热门语言全景对比与学习路线建议
java·python·golang