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/ 以了解更多資訊。