CharLS 是 JPEG-LS 标准的 C++ 实现,用于无损和近无损图像压缩和解压缩。 JPEG-LS 是一种低复杂度图像压缩标准,与 JPEG 2000 压缩比相匹配。
JPEG-LS (ISO/IEC 14495-1:1999 / ITU-T.87) 是源自 Hewlett Packard LOCO 算法的图像压缩标准。 JPEG-LS 具有低复杂度(意味着快速压缩)和高压缩比,类似于 JPEG 2000 无损比。与 JPEG 2000 相比,JPEG-LS 更类似于旧的无损 JPEG,但有趣的是,这两种不同的技术导致了截然不同的性能特征。关于无损 JPEG 和 JPEG-LS 的维基百科:https://en.wikipedia.org/wiki/Lossless_JPEG
提示:ITU 提供其 JPEG-LS 标准 (ITU-T.87) 版本免费下载。文本与 ISO 版本相同。
该项目的目标是全面实施 ISO/IEC 14495-1:1999“连续色调静态图像的无损和近无损压缩:基线”标准。该库是用可移植 C++ 从头开始编写的。主分支使用C++17。 2.x 分支由 C++14 维护。所有主流 JPEG-LS 功能均由该库实现。根据 https://imagecompression.info/gralic 上发布的初步测试结果,CharLS 的速度大约是原始 HP 代码的两倍,并且比 JPEG-XR 和 JPEG 2000 快 3 倍。
CharLS 实现不支持以下 JPEG-LS 选项。大多数这些选项在实践中很少使用。
在发布原始基线 JPEG-LS 标准 ISO 14495-1:1999 后,ISO 发布了 JPEG-LS 标准的扩展,称为 ISO/IEC 14495-2:2003:“连续色调静态图像的无损和近无损压缩:扩展”。目前 CharLS 不支持这些扩展。
该代码定期在 Windows 和 64 位 Linux 上编译/测试。此外,该代码已在 Linux Intel/AMD 32/64 位(slackware、debian、gentoo)、Solaris SPARC 系统、基于 Intel 的 Mac 和 Windows CE(ARM CPU、模拟)上成功进行了测试,其中不太常见的编译器可能需要较小的代码编辑。它利用 C++ 语言功能(模板、特征)来创建优化的代码,通常在最新的编译器中表现最佳。
方面 | 支持版本 |
---|---|
C版 | >= 17 |
C++版本 | >= 17 |
CMake | >= 3.16 |
海湾合作委员会 | >= 9.1 |
铛 | >= 7.0.0 |
MSVC | >= 2019 年 |
苹果铿锵声 | >= 12 |
在 Windows 上使用 vcpkg
PS > vcpkg install charls charls:x64 - windows
在 Linux 或 macOS 上使用 vcpkg
~ /$ ./vcpkg install charls
对于其他平台、更多安装选项、如何从源代码构建等等,请查看文档。
获得该库后,示例文件夹将提供一些代码示例来帮助您入门。
该存储库作为源代码提供,并且特别不提供二进制版本。相反,鼓励“居于领先地位”(从最新版本构建,或者如有必要,针对已知的受支持分支(称为长期支持(LTS)分支)进行构建。对旧编译器版本的支持将是自该编译器的新版本可用之日起 5 年后逐步淘汰,这同样适用于所需的最低 C++ 语言版本。
在 API 和/或 ABI 发生任何重大重大更改之前,将从主分支创建一个分支,以将该快照冻结为 LTS 分支。
CharLS 正在由 GDCM DICOM 工具包使用,感谢 Mathieu Malaterre 在 Linux 上启动 CharLS。 Kato Kanryu 使用 CharLS 为 irfanview 插件编写了颜色变换和 DIB 输出格式代码的初始版本。
该项目中的代码可通过 BSD 样式许可证获得,如果您愿意,可以在商业闭源应用程序中使用该代码。该项目中的所有代码都是从头开始编写的,而不是基于其他 JPEG-LS 实现。请注意,Hewlett Packard 声称拥有适用于 JPEG-LS 实现的专利,但他们免费许可其用于符合 JPEG-LS 实现。其中一些专利可能在您所在的国家/地区已经过期。如果您将此代码用于商业目的,请在使用前阅读 https://hpl.hp.com/loco/ 了解更多信息。