CharLS — это реализация C++ стандарта JPEG-LS для сжатия и распаковки изображений без потерь и почти без потерь. JPEG-LS — это стандарт сжатия изображений низкой сложности, соответствующий степени сжатия JPEG 2000.
JPEG-LS (ISO/IEC 14495-1:1999/ITU-T.87) — это стандарт сжатия изображений, созданный на основе алгоритма Hewlett Packard LOCO. JPEG-LS имеет низкую сложность (что означает быстрое сжатие) и высокую степень сжатия, аналогичную степени сжатия без потерь JPEG 2000. JPEG-LS больше похож на старый формат JPEG без потерь, чем на JPEG 2000, но, что интересно, два разных метода приводят к совершенно разным характеристикам производительности. Википедия о 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 раза.
Следующие параметры JPEG-LS не поддерживаются реализацией CharLS. Большинство из этих вариантов редко используются на практике.
После выпуска исходного базового стандарта 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, компьютерах Mac на базе Intel и Windows CE (ЦП ARM, эмулируется), где для менее распространенных компиляторов могут потребоваться незначительные правки кода. Он использует возможности языка C++ (шаблоны, особенности) для создания оптимизированного кода, который обычно лучше всего работает с последними компиляторами.
Измерение | Поддерживаемая версия |
---|---|
Версия C | >= 17 |
Версия С++ | >= 17 |
CMake | >= 3,16 |
GCC | >= 9,1 |
Кланг | >= 7.0.0 |
МСВК | >= 2019 |
Яблочный лязг | >= 12 |
С vcpkg в Windows
PS > vcpkg install charls charls:x64 - windows
С помощью vcpkg в Linux или macOS
~ /$ ./vcpkg install charls
Для других платформ, дополнительных вариантов установки, сборки из исходного кода и т. д. ознакомьтесь с документацией.
Если у вас есть библиотека, в папке примеров можно найти несколько примеров кода, которые помогут вам начать работу.
Этот репозиторий предоставляется в виде исходного кода и, в частности, не предлагает двоичные выпуски. Вместо этого рекомендуется либо «жить во главе» (сборка на основе последней версии, либо, при необходимости, сборка на основе известной поддерживаемой ветки, известной как ветвь долгосрочной поддержки (LTS). Поддержка более старых версий компилятора будет прекращено через 5 лет с момента появления более новой версии этого компилятора. То же самое относится и к минимально необходимой версии языка C++.
Перед каким-либо серьезным изменением в API и/или ABI будет создана ветка main, чтобы заморозить этот снимок как ветку LTS.
CharLS используется набором инструментов GDCM DICOM, спасибо Матье Малатерру за запуск CharLS в Linux. Като Канрю написал первоначальную версию преобразований цвета и кода выходного формата DIB для плагина irfanview с использованием CharLS.
Код в этом проекте доступен по лицензии в стиле BSD, что позволяет при желании использовать его в коммерческих приложениях с закрытым исходным кодом. Весь код в этом проекте написан с нуля, а не на основе других реализаций JPEG-LS. Имейте в виду, что Hewlett Packard заявляет, что владеет патентами, применимыми к реализациям JPEG-LS, но они бесплатно лицензируют ее для соответствующих реализаций JPEG-LS. Срок действия некоторых из этих патентов, возможно, уже истек в вашей стране. Прочтите дополнительную информацию на странице https://hpl.hp.com/loco/, прежде чем использовать этот код, если вы используете этот код в коммерческих целях.