5分钟快速上手libheif:从零开始处理HEIC和 AVIF格式

📅 2026/8/23 15:48:19
5分钟快速上手libheif:从零开始处理HEIC和 AVIF格式
5分钟快速上手libheif从零开始处理HEIC和 AVIF格式【免费下载链接】libheiflibheif is an HEIF and AVIF file format decoder and encoder.项目地址: https://gitcode.com/gh_mirrors/li/libheiflibheif 是一款开源的 HEIFHEIC和 AVIF 图像格式编解码库用 C 语言编写提供简单的 C API让你既能解码也能编码目前压缩率最高的新一代图片格式。无论你是想在项目里集成 HEIC/AVIF 支持还是只想快速把手机拍的照片转成普通图片5 分钟就能完成第一张图的转换 上图就是仓库 examples/example.avif 中的示例文件用 AVIF 格式编码。用它做第一个练习再合适不过了。一、libheif 能做什么libheif 实现了 ISO/IEC 23008-12 标准的 HEIF 与 AV1 图像文件格式AVIF支持编解码HEIC、AVIF以及 VVC、AVC、JPEG、JPEG 2000 等多种编码 透明通道alpha、深度图、缩略图、辅助图像️ 一个文件包含多张图像️ HEIF 图像序列与 MP4 视频含透明通道️ 分块tiled大图的逐块解码与编码 HDR 图像与正确的色彩空间转换 读取 EXIF / XMP 元数据核心特性说明详见根目录 README.md。二、获取并编译 libheiflibheif 使用 CMake 构建。只需三步git clone https://gitcode.com/gh_mirrors/li/libheif cd libheif mkdir build cd build cmake --presetrelease-noplugins .. make -jrelease-noplugins预设会构建一个自带 HEIC AVIF 支持的单库版本依赖最少最适合新手。常用预设预设说明release所有编解码器编译为独立插件功能最全release-noplugins精简自包含构建仅一个库文件testing构建并运行单元测试 HEIC 解码默认依赖 libde265编码可用 x265GPL或更宽松的 kvazaar。CMake 配置变量在libheif/CMakeLists.txt中定义各编解码器的查找逻辑位于cmake/modules/目录如FindLIBDE265.cmake、FindX265.cmake。三、命令行 3 件套5 分钟上手编译完成后make install安装你将得到四个实用工具源码位于examples/目录工具作用heif-dec把 HEIF/AVIF 解码为 JPEG 或 PNGheif-enc把 JPEG、PNG、TIFF 编码为 HEIF/AVIFheif-info查看文件概要信息加-d可输出完整 box 结构heif-view播放 HEIF 图像序列解码示例——把仓库自带的 AVIF 示例转成 PNGheif-dec examples/example.avif output.png编码示例——把照片压缩为 AVIF 或 HEICheif-enc --compression av1 photo.jpg photo.avif heif-enc --compression hevc photo.jpg photo.heic查看信息heif-info examples/example.avif对应的源码入口分别是 heif_dec.cc、heif_enc.cc 和 heif_info.cc。四、C API十几行代码完成解码libheif 的设计亮点是同一套 API 同时支持 HEIC 和 AVIF无需区分格式。解码主图像并转为 RGB 的完整流程如下heif_context* ctx heif_context_alloc(); heif_context_read_from_file(ctx, input.avif, nullptr); heif_image_handle* handle; heif_context_get_primary_image_handle(ctx, handle); heif_image* img; heif_decode_image(handle, img, heif_colorspace_RGB, heif_chroma_interleaved_RGB, nullptr); int stride; const uint8_t* data heif_image_get_plane_readonly( img, heif_channel_interleaved, stride); // 现在 data 就是 24 位 RGB 像素stride 是行字节数编码只需把heif_compression_AV1换成heif_compression_HEVC就能输出 HEIC切换格式只需改一个参数。完整的 C 接口定义在 heif.h 中还有头文件即用的 C 包装heif_cxx.h写起来更简洁。五、值得了解的高级功能分块大图超高分辨率图像可以逐块tile解码避免内存爆炸安全限制内置heif_security_limits防止恶意文件耗尽内存可用环境变量LIBHEIF_SECURITY_LIMITSoff关闭插件机制编解码器可以动态加载LIBHEIF_PLUGIN_PATH指定插件目录图像序列/视频HEIF 序列与 MP4 视频几乎同构libheif 两者都能读写小结libheif 是处理新一代图片格式的瑞士军刀命令行 5 分钟即可完成 HEIC/AVIF 与常规图片的互转C API 十几行代码就能把图像解码为 RGB 像素。建议先玩熟heif-dec和heif-enc再深入 README.md 了解 CMake 配置变量和插件机制就能完整驾驭这个强大的编解码库 ✨【免费下载链接】libheiflibheif is an HEIF and AVIF file format decoder and encoder.项目地址: https://gitcode.com/gh_mirrors/li/libheif创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考