Разработчики) | Независимая группа JPEG Гвидо Воллбединг (сопровождающий) [1] [2] |
---|---|
Начальная версия | 7 октября 1991 |
Стабильный выпуск | 9д / 12 января 2020 |
Написано в | С |
Операционная система | Кроссплатформенность |
Тип | библиотека |
Лицензия | Пользовательский BSD -подобный ( бесплатное программное обеспечение ) |
Веб-сайт | ijg.org |
libjpeg — бесплатная библиотека с функциями для работы с форматом данных изображения JPEG . Он реализует кодек JPEG (кодирование и декодирование) вместе с различными утилитами для обработки данных JPEG. Он написан на C и распространяется как бесплатное программное обеспечение вместе с его исходным кодом в соответствии с условиями пользовательской разрешающей ( BSD - подобной) лицензии на свободное программное обеспечение, которая требует указания авторства . Оригинальный вариант поддерживается и публикуется Independent JPEG Group (IJG). Между тем, есть несколько форков с дополнительными функциями.
Изображения JPEG JFIF широко используются в Интернете. Степень сжатия можно регулировать для достижения желаемого компромисса между размером файла и визуальным качеством. [3]
Вместе с libjpeg поставляются следующие утилиты:
Программа командной строки jpegtran предоставляет несколько функций для переформатирования и перекодирования представления коэффициентов DCT , для преобразования фактических данных изображения и для отбрасывания вспомогательных данных в файлах JPEG соответственно. Преобразования относительно представления коэффициентов включают:
Каждое из этих преобразований полностью без потерь и обратимо. Преобразования данных изображения включают:
Они без потерь и обратимы только в отношении сохраненных данных изображения. Перекодирование с повторным квантованием данных изображения с потерями ( потеря генерации ) не происходит.
Существует связанное приложение Windows, Jpegcrop , которое предоставляет пользовательский интерфейс для jpegtran . Для Unix-подобных систем, таких как Linux , есть бесплатный CropGUI с аналогичной функциональностью. Дополнительные программы, поддерживающие функции преобразования JPEG без потерь на основе кода IJG, приведены в списке приложений без потерь .
Реализация JPEG Независимой группы JPEG (IJG) была впервые публично выпущена 7 октября 1991 года и с тех пор была значительно усовершенствована. Первоначально разработкой в основном занимался Том Лейн . Реализация IJG с открытым исходным кодом была одним из основных пакетов с открытым исходным кодом и была ключом к успеху стандарта JPEG. Многие компании включили его в различные продукты, такие как редакторы изображений и веб-браузеры. [8]
Для версии 5, выпущенной 24 сентября 1994 года, была переписана вся кодовая база. Он представил служебные программы rdjpgcom и wrjpgcom для обработки встроенных текстовых комментариев. Версия 6 от 2 августа 1995 г. поставлялась с поддержкой прогрессивного JPEG и впервые с служебной программой jpegtran . Эта утилита была расширена за счет функций поворота и отражения изображений и уменьшения оттенков серого в версии 6b.
Из версии 6b libjpeg от 27 марта 1998 года Миясака Масару создал ответвление под названием libjpeg/SIMD , которое включало оптимизацию SIMD для архитектуры x86. В 2009 году он получил значительный вклад от проектов TigerVNC и VirtualGL. На этой основе в 2010 году был создан проект libjpeg-turbo. [9]
После 11 лет и смены руководства IJG выпустила новые версии libjpeg (с 7 по 9), каждая из которых нарушила совместимость ABI с предыдущими версиями. [10] Изменения, которые ожидались после серии 6x, не были реализованы. [11]
В версии 7 была введена поддержка арифметического кодирования , которое ранее было отклонено из-за ситуации с патентами , а также функция кадрирования в jpegtran ( -crop
). [11]
Версии 8 и 9 служили в основном для введения противоречивых [12] несовместимых расширений формата. Многие считают их неэффективными и уступающими существующим стандартизированным решениям. [13] [14] Их стандартизация была отклонена после представления в ITU-T . Первоначальный организатор Том Лейн и другие критикуют эти изменения как отход от целей IJG. [12]
4 марта 2014 года была опубликована первая версия форка mozjpeg , оптимизирующего размер файлов . Для этой версии Джош Аас из Mozilla Research переработал Perl - скрипт jpegcrush от главного разработчика x264 Лорен Мерритт и интегрировал его в кодовую базу libjpeg-turbo. [15]
10 июля 2014 года Mozilla выпустила версию 2.0, в которой в основном добавлено решетчатое квантование, а теперь также можно уменьшить размер базовых файлов JPEG. Facebook , Inc. пожертвовано60 000 долларов на разработку следующей версии [16] и CloudFlare выделили разработчика для улучшения mozjpeg. [17]
Версия | Вышел | Новые возможности | |
---|---|---|---|
Совместимость с ITU T.81 JPEG | |||
1 | 1991 г. | Первый выпуск Базовый или оптимизированный вывод JPEG GIF или PPM | |
2 | 1991 г. | Внутренние улучшения Больше форматов ввода/вывода | |
3 | 1992 г. | Внутренние улучшения и улучшения качества изображения | |
4 | 1992 г. | Внутренние улучшения и улучшения скорости | |
4а | 18 февраля 1993 г. | ||
5 | 1994-09-24 | Внутренние улучшения и пересмотренный API | |
5а | 1994-12-07 | ||
5б | 15 марта 1995 г. | ||
6 | 1995-08-02 | Прогрессивный JPEG jpegtran (преобразование между базовым и прогрессивным) | |
6а | 1996-02-07 | ||
6б | 1998-03-27 | jpegtran расширен до вращения без потерь Используется libjpeg-turbo | |
Проприетарные несовместимые расширения | |||
7 | 27 июня 2009 г. | jpegtran расширен до обрезки без потерь Арифметическое кодирование T.851 [18] | |
8 | 2010-01-10 | Внутренние исправления jpegtran расширен для использования SmartScale | |
8а | 2010-02-28 | RGBA | |
8б | 2010-05-16 | ||
8с | 2011-01-16 | Переменный размер блока DCT | |
8д | 2012-01-15 | RGB JPEG (без преобразования цвета в YCbCr) | |
9 | 2013-01-13 | Цвет YCoCg Сжатие без потерь (1x1 DCT) [21] | |
9а | 2014-01-19 | " JFIFv 2" scRGB Широкий цветовой охват (стандарт неизвестен) Цвет 8-12 бит (исходный JPEG) | |
9б | 2016-01-17 | ||
9с | 2018-01-14 | ||
9д | 2020-01-12 |
Легенда: | Старая версия, не поддерживается | Старая версия, до сих пор поддерживается | Текущая стабильная версия |
---|
Известными форками являются libjpeg-turbo, оптимизирующий скорость выполнения, и mozjpeg, оптимизирующий файлы меньшего размера.
Существует также одноименная библиотека от ISO , цель которой — полная реализация стандартов JPEG, JPEG XT и JPEG-LS . [22]
Разработчики) | проект libjpeg-turbo |
---|---|
Начальная версия | 10 марта 2010 |
Стабильный выпуск | 2.1.1 / 10 августа 2021 |
Веб-сайт | libjpeg-turbo .org |
libjpeg-turbo — это ответвление libjpeg , использующее инструкции SIMD для ускорения кодирования и декодирования базового JPEG. Многие проекты теперь используют libjpeg-turbo вместо libjpeg, включая популярные дистрибутивы Linux ( Fedora , Debian , Mageia , openSUSE , ...), Mozilla и Chrome . [23] [24] [25] Помимо производительности, некоторые проекты решили использовать libjpeg-turbo, потому что это позволяет им сохранить обратную совместимость с ABI со старым выпуском libjpeg v6b. [26]libjpeg v7, v8 и v9 нарушили совместимость ABI с предыдущими выпусками. [10]
libjpeg-turbo можно настроить для совместимости с libjpeg v7 или v8 ABI, но он не реализует полный набор функций последних выпусков IJG, включая расширение формата SmartScale. [27] Проект libjpeg-turbo решил не поддерживать SmartScale, сославшись на опасения по поводу того, что это не стандарт ITU-T , и сославшись на собственное исследование, которое ставит под сомнение полезность этой функции. Кроме того, поскольку единственная важная новая функция в libjpeg v9 относится к формату SmartScale, проект libjpeg-turbo решил отказаться от эмуляции libjpeg v9. [13] Таким образом, файлы SmartScale, созданные с помощью libjpeg v8 и более поздних версий, не будут корректно распаковываться с помощью libjpeg-turbo.
libjpeg-turbo — одна из двух эталонных реализаций JPEG, доступных как ISO/IEC 10918-7 и ITU-T T.873 . Другой эталонной реализацией является ISO libjpeg, которая также включает поддержку JPEG XT и JPEG LS.
Разработчики) | Исследования Мозиллы |
---|---|
Начальная версия | 4 марта 2014 |
Стабильный выпуск | 4.0.3 / 26 февраля 2021 [28] |
Веб-сайт | github.com/mozilla/mozjpeg _ _ _ |
mozjpeg — это форк libjpeg-turbo, созданный Джошем Аасом и другими сотрудниками Mozilla Research. Он направлен на ускорение загрузки веб-страниц за счет уменьшения размера файла (примерно на 10%) и, следовательно, времени передачи за счет повышения эффективности кодирования при сохранении качества изображения. Для этого он использует больше вычислительной мощности для кодирования (асимметрии), сохраняя при этом полную совместимость со стандартом JPEG и не требуя изменений на стороне декодера.
Методы, которые mozjpeg использует для достижения высокой степени сжатия, включают оптимизацию деревьев Хаффмана , использование прогрессивного кодирования для оптимального разделения спектра коэффициентов DCT на отдельные сканирования и использование решетчатого квантования . Кроме того, пресеты агрессивно настроены на минимизацию размеров файлов.
Помимо libjpeg-turbo, mozjpeg также основан на jpegcrush, Perl - скрипте Лорен Мерритт. [15] [29]
Объединенная группа экспертов по фотографии ISO/IEC поддерживает эталонную программную реализацию для базового JPEG (ISO/IEC 10918-1 и 18477-1) и расширений JPEG XT (ISO/IEC 18477, части 2 и 6-9), а также для JPEG без потерь . LS (ИСО/МЭК 14495). [30] Он также включает некоторые оптимизации mozjpeg. Хотя он также называется libjpeg, он не связан с исходным кодом, предоставленным Independent JPEG Group (IJG), и не поддерживает проприетарные расширения, представленные IJG с 2007 года.
Единственная проблема заключалась в том, что Гвидо Воллбединг вряд ли подписан на этот список, а IJG JPEG, по сути, разработан одним человеком.
Викискладе есть медиафайлы, связанные с libjpeg . |