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
相关推荐
MY_TEUCK3 小时前
Sealos 平台部署实战指南:结合 Cursor 与版本发布流程
java·人工智能·学习·aigc
我爱cope4 小时前
【从0开始学设计模式-10| 装饰模式】
java·开发语言·设计模式
朝新_4 小时前
【Spring AI 】图像与语音模型实战
java·人工智能·spring
RH2312115 小时前
2026.4.16Linux 管道
java·linux·服务器
zmsofts5 小时前
java面试必问13:MyBatis 一级缓存、二级缓存:从原理到脏数据,一篇讲透
java·面试·mybatis
aq55356007 小时前
编程语言三巨头:汇编、C++与PHP大比拼
java·开发语言
我是无敌小恐龙7 小时前
Java SE 零基础入门Day01 超详细笔记(开发前言+环境搭建+基础语法)
java·开发语言·人工智能·opencv·spring·机器学习
心态与习惯8 小时前
Julia 初探,及与 C++,Java,Python 的比较
java·c++·python·julia·比较
一叶飘零_sweeeet8 小时前
优秀文章合集
java
A小码哥8 小时前
github上 160K star 的 superpowers 插件使用经验与场景总结
github