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
相关推荐
可乐ea3 分钟前
【知识获取与分享社区项目 | 项目日记第 21 天】索引构建与联想建议:Outbox 增量更新 + Completion Suggester
java·大数据·mysql·elasticsearch·搜索引擎
RainCity8 分钟前
Java Swing 自定义组件库分享(十一)
java·笔记·后端
好家伙VCC13 分钟前
Qdrant + LangChain 实战:构建毫秒级语义检索服务
java·langchain
AI人工智能+电脑小能手16 分钟前
【大白话说Java面试题 第93题】【Mysql篇】第23题:从查找速度来看,聚集索引和非聚集索引哪个更快?
java·开发语言·数据库·mysql·面试
摇滚侠24 分钟前
JDBC 基础到高级一套通关!高级篇 28-40
java
Smoothcloud润云1 小时前
5大功能精修,重构AI算力使用体验!
java·人工智能·windows·算法·重构·编辑器·sublime text
猎奇不再看1 小时前
MAF的Agent详解:连接LLM的IChatClient对象
github
我是唐青枫1 小时前
Java MyBatis-Flex 实战指南:从 BaseMapper 到 QueryWrapper 的轻量 ORM 用法
java·开发语言·mybatis
顺风尿一寸1 小时前
Java Native 方法底层原理深度解析:从 JNI 注册到 Native Wrapper 生成
java
米猴设计师1 小时前
Nano Banana AI模特换装教程|PS一键无缝穿搭切换
图像处理·人工智能·aigc·ps插件·nano banana·startai插件