项目简介
本项目是一个基于C语言的库,用于处理JPEG图像。具备SIMD加速功能,支持多种颜色空间转换、下采样、上采样、离散余弦变换(DCT)和逆离散余弦变换(IDCT)等图像处理操作,以及JPEG图像的编码和解码。支持优化色彩空间转换、下采样、上采样、IDCT和量化步骤以提升处理速度,还能利用特定硬件架构(如ARM、MIPS、PowerPC和x86_64等)的SIMD指令集加速。库中包含计算MD5哈希值、比较文件哈希值及处理JPEG文件的命令行工具,并且提供了Java封装,便于Java程序调用。
项目的主要特性和功能
- 高性能处理:借助SIMD指令(MMX、SSE2、AVX2、NEON、AltiVec)加速基线JPEG压缩和解压缩,在x86、x86 - 64、ARM和PowerPC系统上比libjpeg快2 - 6倍。
- 多API支持:实现传统libjpeg API和更简洁的TurboJPEG API,满足不同用户需求。
- 颜色空间扩展:支持将JPEG图像直接压缩到或从使用BGR、BGRX、RGBX、XBGR和XRGB像素排序的缓冲区进行操作。
- 兼容性:libjpeg API实现与libjpeg v6b在API/ABI和数学上兼容,也可配置为与libjpeg v7和v8 API/ABI兼容。
- 功能丰富:包含jpegtran用于无损转码,rdjpgcom和wrjpgcom用于插入和提取JFIF文件中的文本注释等实用工具。
安装使用步骤
安装
假设用户已下载本项目的源码文件,具体编译和安装步骤请参考BUILDING.md
文件中的完整说明。
使用
libjpeg - turbo包含两个可用于压缩和解压缩JPEG图像的API:
1. TurboJPEG API:提供易于使用的接口,用于在内存中压缩和解压缩JPEG图像,推荐首次使用的用户使用。使用示例可参考tjexample.c
和java/TJExample.java
,API文档可查看http://libjpeg-turbo.org/Documentation/Documentation。
2. libjpeg API:行业标准API,功能强大但使用难度较高。使用示例可参考cjpeg.c
和djpeg.c
,API文档可查看libjpeg.txt
。
此外,使用颜色空间扩展功能时,可参考jcstest.c
检查编译时和运行时扩展的可用性。若需模拟libjpeg v7或v8 ABI,使用cmake
时可传递-DWITH_JPEG7 = 1
或-DWITH_JPEG8 = 1
参数。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】