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
相关推荐
csdn_aspnet9 小时前
GitHub Actions自动化运维实战,用CI/CD流水线实现测试、部署、安全扫描一体化
运维·安全·ci/cd·自动化·github
爱吃牛肉的大老虎9 小时前
rust基础之环境搭建
java·开发语言·rust
tellmewhoisi10 小时前
多版本共用redis的token有效期校验(过期重新登录)
java·redis·缓存
疯狂打码的少年10 小时前
【软件工程】结构化设计:模块独立性与耦合内聚
java·开发语言·笔记·软件工程
乐观的Terry10 小时前
3、数据库设计与领域实体
java·数据库·spring boot·spring cloud·ai编程
BerrySen17810 小时前
我的AI辅助开发工具链2026版
开源·github
C++、Java和Python的菜鸟11 小时前
第4章 后端Web基础(基础知识)
java·开发语言
芷栀夏11 小时前
Java教育平台实战复盘:课程、考试与学习行为分析系统设计
java·开发语言·学习
dong_junshuai11 小时前
每天一个开源项目#40 Apache Ossie:1K Stars的AI/BI语义层通用标准
github
维基框架11 小时前
维基框架(Wiki-Framework) 1.2.0:Mybatis 升级为主从读写分离
java·后端·架构