ARTICLE DETAIL

资讯详情

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

把 HEIC 和 AVIF 装进你的项目:libheif 编解码库快速上手

把 HEIC 和 AVIF 装进你的项目:libheif 编解码库快速上手 把 HEIC 和 AVIF 装进你的项目libheif 编解码库快速上手【免费下载链接】libheiflibheif is an HEIF and AVIF file format decoder and encoder.项目地址: https://gitcode.com/gh_mirrors/li/libheif一张 HEIC 照片在 Mac 上正常发到 Windows 就发灰多半是对方缺 HEIF/AVIF 的编解码支持。libheif 是一个把 HEIC、AVIF 读写统一成同一套 C 接口的开源编解码库装上它你的应用就能读这些新格式。 libheif 安装步骤与最小解码示例三种平台各一行安装命令macOSbrew install cmake make pkg-config x265 libde265 libjpeg libtoolWindowsvcpkg install libheif源码编译Linux 等git clone https://gitcode.com/gh_mirrors/li/libheif进入build目录后执行cmake --presetrelease .. make--preset需要 CMake ≥ 3.21装好之后先看一段最短的 HEIC/AVIF 解码代码。注意heif_context_read_from_file对任意格式都成立换文件不用改代码heif_context* ctx heif_context_alloc(); heif_context_read_from_file(ctx, input_filename, nullptr); // 取主图像句柄 heif_image_handle* handle; heif_context_get_primary_image_handle(ctx, handle); // 解码为 24 位交错 RGB 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); heif_image_release(img); heif_image_handle_release(handle); heif_context_free(ctx);编译安装成功后data里就是解码出的像素也就是下面这张仓库自带的 AVIF 示例图核心能力为什么选它压缩效率HEIC 用 HEVCH.265、AVIF 用 AV1 编码同画质下体积大约只有 JPEG 的一半。你拿它存照片、传照片存储和带宽各省一半。一套接口通吃多格式解码器对 HEIF、AVIF 及其他压缩格式用同一套 C 接口你的解码代码不用改就能读任何格式。编码时把格式参数从heif_compression_HEVC换成heif_compression_AV1就切到 AVIF 输出。HDR、透明度与多图像它能按内嵌颜色配置做正确的 HDR 颜色转换也能读透明通道、深度图、缩略图和辅助图像一个文件里可以装多张图。你做多图层或高动态范围图像时不用再自己拼格式。图块与流式超大图可以逐图块解码内存里不必一次性放下整张还能通过>格式解码器编码器HEIClibde265, ffmpegx265, kvazaarAVIFAOM, dav1dAOM, rav1e, svt-av1VVCvvdecvvenc, uvg266AVCopenh264x264JPEGlibjpeg(-turbo)libjpeg(-turbo)JPEG2000OpenJPEGOpenJPEGHTJ2KOpenJPEGOpenJPH无损内置内置从 v1.14.0 起每个编解码器既可静态编进库也能编译成动态插件按需加载用 CMake 的WITH_{codec}_PLUGIN选项逐个决定。运行时插件从环境变量LIBHEIF_PLUGIN_PATH冒号分隔Windows 用分号指向的目录列表读取。 多语言接入路径C、Go、Python、Rust、.NET、Swift、JavaFX 都有现成绑定能直接调 C 库的语言如 Swift、C#开箱即用C 封装是库的一部分头文件-only保持二进制兼容。想跑在浏览器里可以用 emscripten 把 libheif 编译成 JavaScriptmkdir buildjs cd buildjs USE_WASM0 ../build-emscripten.sh ..需要 WASM 输出就把USE_WASM改成1纯 JS 路径则走浏览器自带的 webcodecs 接口。 进阶用法图块、EXIF 与自带工具超大图分块落地真遇到放不下内存的图逐图块解码、再逐块编码落盘即可编码时一个图块一个图块追加不必一次性持有整张。EXIF 读取按类型名查一次元数据块 ID再取大小、取数据三步拿到完整 EXIF 字节XMP 同理。自带命令行工具示例程序位于examples/目录。heif-dec把 HEIF/AVIF 里的所有图导出成 JPEG 或 PNG也就是常说的 HEIC 转 JPEGheif-enc把 JPEG 等转成 HEIF/AVIFheif-info是极简解码器把文件结构打印到控制台加-d还能 dump 完整的 box 结构。Gnome 缩略图heif-thumbnailer可作 Gnome 桌面的 HEIF/AVIF 缩略图生成器配套配置文件见gnome/目录。生态与依赖已有不少软件直接基于 libheifGIMP、Krita、ImageMagick、GraphicsMagickdarktable、digiKam、libvips、libGDkImageFormats、Kodi HEIF 解码插件、bimg、GDAL、OpenImageIO、XnView许可证libheif 遵循 GNU LGPLLesser General Public License分发示例程序采用 MIT 许可证细节见仓库根目录的COPYING。如果你要写能读 HEIC/AVIF 的应用、做 HEIC 转 JPEG 之类的批处理或给浏览器加 AVIF 支持libheif 都能直接上手它把多种格式的读写收敛到一套接口依赖还能按需裁剪。【免费下载链接】libheiflibheif is an HEIF and AVIF file format decoder and encoder.项目地址: https://gitcode.com/gh_mirrors/li/libheif创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表