ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

libheif HEIF/AVIF 编解码库:从源码到出图完整指南

libheif HEIF/AVIF 编解码库:从源码到出图完整指南 libheif HEIF/AVIF 编解码库从源码到出图完整指南【免费下载链接】libheiflibheif is an HEIF and AVIF file format decoder and encoder.项目地址: https://gitcode.com/gh_mirrors/li/libheiflibheif 是一个 C 语言写的 HEIF/AVIF 编解码库实现 ISO/IEC 23008-12 标准同一套解码代码通吃 HEIC、AVIF、JPEG-in-HEIF 等格式压缩后的图像体积通常比 JPEG 小 50% 以上。 什么时候会用到它做图像服务后端需要把用户上传的 HEIC/AVIF 转成统一格式存储或者反向把存量 JPEG 压成更小的 HEIF 文件。写图片处理工具要处理透明通道、缩略图、HDR 图像或分块大图不想自己啃 HEIF 的 box 结构。在 Gnome 桌面生态做开发给 HEIF/AVIF 文件加缩略图支持。 三步跑起来环境要求CMake ≥ 3.21--preset参数依赖编译器以及编解码依赖——HEIC 用 libde265解码 x265编码AVIF 用 libaom。git clone https://gitcode.com/gh_mirrors/li/libheif cd libheif mkdir build cd build cmake --presetrelease .. # 全编解码器插件化也可选 release-noplugins自包含、无插件 make验证动作对任意 HEIF 文件跑heif-info file能打印出 box 结构即表示库可用。✅ 核心能力一览HEIC、AVIF、VVC、AVC、JPEG-in-HEIF、JPEG2000、无损压缩格式ISO/IEC 23001-17内置均可读写透明通道、深度图、缩略图、辅助图像单文件多图像、图像序列与 MP4 视频含 alpha分块图像可逐 tile 解码也可逐 tile 追加编码HDR 图像按嵌入的 color profile 正确转色裁剪、镜像、旋转、叠加图像读取 EXIF / XMP 元数据区域注释与 mask 图像流式解码下载时边取数据边解内置安全限制防止超大图像或恶意文件打爆内存 格式与编解码器支持格式解码编码HEIClibde265, ffmpegx265, kvazaarAVIFlibaom, dav1dlibaom, rav1e, svt-av1VVCvvdecvvenc, uvg266AVCopenh264, ffmpegx264JPEGlibjpeg(-turbo)libjpeg(-turbo)JPEG2000OpenJPEGOpenJPEGHTJ2KOpenJPEGOpenJPH无损内置内置同一套 API 覆盖以上全部格式写 HEIF 还是 AVIF 只需把heif_context_get_encoder_for_format的参数在heif_compression_HEVC和heif_compression_AV1之间切换。 最小可用示例加载并解码 HEIF/AVIF对两种文件格式是同一份代码heif_context* ctx heif_context_alloc(); heif_context_read_from_file(ctx, filename, nullptr); // 读入文件 heif_image_handle* handle; // 主图像句柄 heif_context_get_primary_image_handle(ctx, handle); heif_image* img; // 解码并转 RGB 交错 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 后按序释放: heif_image_release / handle_release / context_free编码写回 HEIFheif_context* ctx heif_context_alloc(); heif_encoder* encoder; heif_context_get_encoder_for_format(ctx, heif_compression_HEVC, encoder); heif_encoder_set_lossy_quality(encoder, 50); // 有损质量 0~100 heif_image* image; // 填充图像数据(此处省略) heif_context_encode_image(ctx, image, encoder, nullptr, nullptr); heif_encoder_release(encoder); heif_context_write_to_file(ctx, output.heic, nullptr); heif_context_free(ctx);EXIF/XMP 读取、缩略图获取等走同一套 handle API一行heif_image_handle_get_list_of_metadata_block_IDs即可列出元数据块 ID。 生态与集成C官方 header-only 包装层二进制兼容 C APIGolibheif-goPythonpyheif / pillow_heif.NETlibheif-sharpJavaScript / NodeJSlibheif-js或 emscripten 自编译USE_WASM0纯 JSUSE_WASM1出 WASM其他Rustlibheif-sys、Swift、JavaFX下游软件GIMP、Krita、ImageMagick、GraphicsMagick、darktable、digiKam 7.0.0、libvips、kImageFormats、libGD、GDAL、OpenImageIO、XnView、bimg⚙️ 进阶玩法分块图像处理超大分辨率图像不必整图解码可以逐 tile 取数编码端也支持逐 tile 追加。examples/ 里的heif-dec/heif-enc就是完整参考实现。编解码器插件配置v1.14.0 起每个 codec 后端可静态内置或独立编译为动态插件。每个 codec 对应两个 CMake 变量WITH_{codec}启用编解码WITH_{codec}_PLUGIN控制是否插件化。插件目录由LIBHEIF_PLUGIN_PATH指定Linux 冒号分隔Windows 分号分隔。命令行工具与桌面集成heif-dec解码出 JPEG/PNG、heif-enc反向编码-A出 AVIF、heif-infodump box 结构、heif-view看序列。Gnome 缩略图由heif-thumbnailer提供配套 mime 配置在gnome/make install还会装 gdk-pixbuf 加载器。浏览器编译用 emscripten 把 libheif 编成 JavaScript/WASMmkdir buildjs cd buildjs USE_WASM0 ../build-emscripten.sh ..。macOS 侧可用brew install cmake make pkg-config x265 libde265 libjpeg libtool快速装好依赖。结语libheif 以 LGPL 发布示例程序采用 MIT 许可源码与构建配置均可直接审计。需要 HEIF/AVIF 读写、转码、分块处理或 WASM 集成时它提供了从标准符合性到 CLI 工具链的完整方案。【免费下载链接】libheiflibheif is an HEIF and AVIF file format decoder and encoder.项目地址: https://gitcode.com/gh_mirrors/li/libheif创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表