Jump to content

libjpeg

(Перенаправлено с Mozjpeg )
libjpeg
Разработчик(и) Независимая группа JPEG
Гвидо Волльбединг (сопровождающий) [1] [2]
Первоначальный выпуск 7 октября 1991 г .; 32 года назад ( 1991-10-07 )
Стабильная версия
[3]  Отредактируйте это в Викиданных / 14 января 2024 г .; 6 месяцев назад ( 14 января 2024 г. )
Написано в С
Операционная система Кросс-платформенный
Тип библиотека
Лицензия Пользовательское BSD -подобное ( бесплатное программное обеспечение )
Веб-сайт 100 .org
jpegclub.org

libjpeg — бесплатная библиотека с функциями для работы с форматом данных изображений JPEG . JPEG Он реализует кодек (кодирование и декодирование) наряду с различными утилитами для обработки данных JPEG.Он написан на языке C и распространяется как свободное программное обеспечение вместе со своим исходным кодом на условиях специальной разрешающей ( BSD -подобной) лицензии свободного программного обеспечения, требующей указания авторства .Исходный вариант поддерживается и публикуется Independent JPEG Group (IJG). Между тем, существует несколько форков с дополнительными функциями.

Изображения JPEG JFIF широко используются в Интернете. Степень сжатия можно регулировать для достижения желаемого компромисса между размером файла и качеством изображения. [4]

Вместе с libjpeg поставляются следующие служебные программы:

cjpeg и djpeg
для выполнения преобразований между JPEG и некоторыми другими популярными форматами файлов изображений.
rdjpgcom и wrjpgcom
для вставки и извлечения текстовых комментариев в файлах JPEG.
jpegtran
для преобразования существующих файлов JPEG.
jpegtran преобразует данные JPEG без перекодирования
(здесь с пользовательским интерфейсом CropGUI )

Программа командной строки . jpegtran предоставляет несколько функций для переформатирования и перекодирования представления коэффициентов DCT , для преобразования фактических данных изображения и для удаления вспомогательных данных в файлах JPEG соответственно Преобразования, касающиеся представления коэффициентов, включают в себя:

Каждое из этих преобразований происходит без потерь и обратимо. Преобразования данных изображения включают в себя:

  • исключить нестандартные данные, специфичные для приложения, вставленные некоторыми программами обработки изображений,
  • выполнить определенные преобразования файла, например:
    • отбрасывание цветовых каналов (преобразование в оттенки серого),
    • вращение и переворачивание с шагом 90 градусов,
    • обрезка или объединение по границам блоков изображений (каждые 8×8 или 16×16 пикселей),
    • масштабирование. [8]

Они выполняются без потерь и обратимы только в отношении сохраняемых данных изображения. Перекодирование с повторным квантованием данных изображения с потерями ( потеря генерации ) не происходит.

Существует связанное приложение Windows, Jpegcrop , которое предоставляет пользовательский интерфейс для jpegtran . На Macintosh есть приложение SquarePusher . Для Unix-подобных систем , таких как Linux, существует бесплатный CropGUI с аналогичной функциональностью.Дополнительные программы, поддерживающие функции преобразования JPEG без потерь на основе кода IJG, приведены в Списке приложений без потерь .

Реализация JPEG, разработанная Independent JPEG Group (IJG), была впервые публично выпущена 7 октября 1991 года и с тех пор значительно усовершенствовалась.Разработкой изначально в основном занимался Том Лейн .Реализация IJG с открытым исходным кодом была одним из основных пакетов с открытым исходным кодом и сыграла ключевую роль в успехе стандарта JPEG. Многие компании включили его в различные продукты, такие как редакторы изображений и веб-браузеры. [9]

Для версии 5, выпущенной 24 сентября 1994 года, была переписана вся кодовая база. Он представил служебные программы rdjpgcom и wrjpgcom для обработки встроенных текстовых комментариев.Версия 6 от 2 августа 1995 года имела поддержку прогрессивного JPEG и впервые содержала служебную программу jpegtran . В версии 6b эта утилита была расширена функциями поворота и переворачивания изображений, а также уменьшением оттенков серого.

libjpeg-turbo и его потомки

[ редактировать ]

Из версии 6b libjpeg от 27 марта 1998 года Миясака Масару создал ветку под названием libjpeg/SIMD , которая включала оптимизацию SIMD x86. В 2009 году он получил существенный вклад от проектов TigerVNC и VirtualGL. На этой основе в 2010 году был создан проект libjpeg-turbo. [10]

первая версия форка MozJPEG 4 марта 2014 года была опубликована для оптимизации размера файла. Для этой версии Джош Аас из Mozilla Research переработал Perl -скрипт jpegcrush от главного разработчика x264 Лорена Мерритта и интегрировал его в базу кода libjpeg-turbo. [11]

10 июля 2014 года Mozilla выпустила версию 2.0, в которой в основном добавлено решетчатое квантование, а также теперь можно уменьшать размер базовых файлов JPEG. Facebook , Inc. пожертвовала 60 000 долларов на разработку следующей версии, [12] и CloudFlare назначили разработчика для улучшения MozJPEG. [13]

В 2019 году libjpeg-turbo стал стандартом ISO, а ITU одобрил эталонную реализацию формата JPEG. [14]

В апреле 2024 года Google представила Jpegli , новую библиотеку кодирования JPEG, которая предлагает расширенные возможности и улучшение степени сжатия на 35% при настройках сжатия высокого качества, при этом скорость кодирования сравнима с MozJPEG. [15]

Смена руководства IJG

[ редактировать ]

После 11 лет и смены руководства IJG под руководством Гвидо Волльбединга выпустила новые версии libjpeg (с 7 по 9), каждая из которых нарушала совместимость ABI с предыдущими версиями. [16] Изменения, которые ожидались после серии 6x, не были внесены. [17] В 7 версии была введена поддержка арифметического кодирования , от которой ранее отказались из-за патентной ситуации, а также возможность обрезки в jpegtran ( -crop). [17]

Версии 8 и 9 служили в основном для введения спорных [18] несовместимые расширения формата. Многие считают их неэффективными и уступающими существующим стандартизированным решениям. [19] [20] Их стандартизация была отклонена после подачи в ITU-T . Первоначальный организатор Том Лейн и другие критикуют эти изменения как отход от целей IJG. [18]

Версия Выпущенный Новые возможности
Совместимость с ITU T.81 JPEG
Старая версия, больше не поддерживается: 1 1991
  • Первый выпуск
  • Базовый или оптимизированный JPEG
  • Вывод в формате GIF или PPM
Старая версия, больше не поддерживается: 2 1991
  • Внутренние улучшения
  • Больше форматов ввода/вывода
Старая версия, больше не поддерживается: 3 1992 Внутренние улучшения и улучшения качества изображения.
Старая версия, больше не поддерживается: 4 1992 Внутренние улучшения и улучшения скорости
Старая версия, больше не поддерживается: 4a 1993-02-18
Старая версия, больше не поддерживается: 5 1994-09-24 Внутренние улучшения и обновленный API
Старая версия, больше не поддерживается: 5a 1994-12-07
Старая версия, больше не поддерживается: 5b 1995-03-15
Старая версия, больше не поддерживается: 6 1995-08-02
  • Прогрессивный JPEG
  • jpegtran (преобразование между базовым и прогрессивным уровнем)
Старая версия, больше не поддерживается: 6a 1996-02-07
Старая версия, но все еще поддерживается: 6b. 1998-03-27
  • jpegtran расширен до вращения без потерь

(используется libjpeg-turbo , MozJPEG и Jpegli )

Старая версия, больше не поддерживается: 7 2009-06-27
  • jpegtran расширен до обрезки без потерь
  • Арифметическое кодирование T.851 [21]
  • Масштабированное ДКП [22]
Собственные несовместимые расширения
Старая версия, больше не поддерживается: 8 2010-01-10
  • Расширение SmartScale (отклонено МСЭ) [23] [24]
  • jpegtran расширен для использования SmartScale
  • Внутренние исправления
Старая версия, больше не поддерживается: 8a 2010-02-28 РГБА
Старая версия, больше не поддерживается: 8b 2010-05-16 Повреждения памяти и исправления сборки
Старая версия, больше не поддерживается: 8c. 2011-01-16 Возможность выбора размера блока DCT (SmartScale)
Старая версия, больше не поддерживается: 8d 2012-01-15 RGB JPEG (без преобразования цвета в YCbCr)
Старая версия, больше не поддерживается: 9 2013-01-13
  • YCoCg Цвет
  • Сжатие без потерь (1x1 DCT) [25]
Старая версия, больше не поддерживается: 9a 2014-01-19
  • « JFIFv scRGB Широкая цветовая гамма (стандарт неизвестен)
  • 8-12-битный цвет (стандартный JPEG)
Старая версия, больше не поддерживается: 9b 2016-01-17 Улучшения вычислений
Старая версия, больше не поддерживается: 9c. 2018-01-14 jpegtran -wipe
Старая версия, больше не поддерживается: 9d 2020-01-12
  • Очистка кода
  • Оптимизация Хаффмана
  • поддержка x64 (MSVC)
  • jpegtran -drop
Старая версия, больше не поддерживается: 9e 2022-01-16 Поддержка ARM и ARM64 (MSVC)
Текущая стабильная версия: 9f. 2024-01-14
  • Поддержка ARM64EC (MSVC)
  • Система сборки Xcode
  • Система сборки C++Builder/RAD Studio
Легенда: Старая версия, не поддерживается Старая версия, все еще поддерживается Текущая стабильная версия Latest preview versionFuture release

Хорошо известны форки libjpeg-turbo, оптимизирующие скорость выполнения, и MozJPEG, оптимизирующие файлы меньшего размера.

Существует также одноименная библиотека ISO LS , целью которой является полная реализация стандартов JPEG, JPEG XT и JPEG- . [26]

libjpeg-турбо

[ редактировать ]
libjpeg-турбо
Разработчик(и) Проект libjpeg-turbo
Первоначальный выпуск 19 ноября 2010 г .; 13 лет назад ( 19.11.2010 )
Стабильная версия
3.0.0 / 3 июля 2023 г .; 13 месяцев назад ( 03.07.2023 )
Репозиторий github /libjpeg-турбо
Веб-сайт libjpeg-турбо .org

libjpeg-turbo — это ответвление libjpeg, которое использует SIMD инструкции для ускорения базового кодирования и декодирования JPEG. Многие проекты теперь используют libjpeg-turbo вместо libjpeg, включая популярные дистрибутивы Linux ( Fedora , Debian , Mageia , openSUSE , ...), Mozilla и Chrome . [27] [28] [29] Помимо производительности, некоторые проекты решили использовать libjpeg-turbo, поскольку это позволяет им сохранить обратную совместимость ABI со старой версией libjpeg v6b. [30] libjpeg v7, v8 и v9 нарушили совместимость ABI с предыдущими выпусками. [16]

libjpeg-turbo реализует совместимое со стандартами арифметическое кодирование и функции обрезки без потерь, представленные в libjpeg v7. Его также можно настроить для совместимости с ABI libjpeg v7 или v8, но он реализует масштабирование DCT и собственную технологию SmartScale, основанную на масштабировании DCT. [31] libjpeg-turbo предпочитает не поддерживать SmartScale, поскольку он не является стандартом ITU-T и поскольку их собственные исследования считают его (и масштабирование DCT) неэффективным. [22] В более широком смысле, поскольку единственная важная новая функция в libjpeg v9 специфична для формата SmartScale, проект libjpeg-turbo решил отказаться от эмуляции libjpeg v9. [19]

С 2019 года libjpeg-turbo является одной из двух эталонных реализаций JPEG, доступных как ISO/IEC 10918-7 и ITU-T T.873. [14] Другая эталонная реализация — ISO libjpeg, которая также включает поддержку JPEG XT и JPEG LS.

МозJPEG
Разработчик(и) Исследования Мозиллы
Первоначальный выпуск 4 марта 2014 г .; 10 лет назад ( 04.03.2014 )
Стабильная версия
4.1.1 / 26 февраля 2021 г .; 3 года назад ( 26.02.2021 ) [32]
Веб-сайт github / Мозилла /mozjpeg

MozJPEG — это ответвление libjpeg-turbo, созданное Джошем Аасом и другими из Mozilla Research. Его цель — ускорить загрузку веб-страниц за счет сокращения размера файла (около 10%) и, следовательно, времени передачи за счет повышения эффективности кодирования при сохранении качества изображения. Для этого он использует больше вычислительной мощности для кодирования (асимметрии), сохраняя при этом полную совместимость со стандартом JPEG и не требуя никаких изменений на стороне декодера.

Методы, которые MozJPEG использует для достижения высокой степени сжатия, включают оптимизацию деревьев Хаффмана , использование прогрессивного кодирования для оптимального разделения спектра коэффициентов DCT на отдельные сканирования, а также использование решетчатого квантования . Кроме того, пресеты тщательно настроены на минимизацию размеров файлов.

Помимо libjpeg-turbo, MozJPEG также основан на jpegcrush, сценарии Perl Лорен Мерритт. [11] [33]

Джпегли
Разработчик(и) Google
Первоначальный выпуск 3 апреля 2024 г .; 4 месяца назад ( 03.04.2024 )
Репозиторий github /libjxl /libjxl /дерево /основной /lib /jpegli
Веб-сайт github /libjxl /libjxl /дерево /основной /lib /jpegli

В апреле 2024 года Google представила Jpegli , новую библиотеку кодирования JPEG, которая предлагает расширенные возможности и улучшение степени сжатия на 35% при настройках сжатия высокого качества, при этом скорость кодирования сравнима с MozJPEG. [34]

ISO-библиотека jpeg

[ редактировать ]

ISO/IEC Объединенная группа экспертов по фотографии поддерживает эталонную реализацию программного обеспечения для базового JPEG (ISO/IEC 10918-1 и 18477-1) и расширений JPEG XT (ISO/IEC 18477, части 2 и 6-9), а также JPEG-файлов без потерь. LS (ИСО/МЭК 14495). [35] Он также включает некоторые оптимизации MozJPEG. Хотя он также называется libjpeg, он не связан с исходным кодом, предоставленным Independent JPEG Group (IJG), и не поддерживает собственные расширения, представленные IJG с 2007 года.

См. также

[ редактировать ]
  1. ^ Гёлер, Ларс (29 апреля 2020 г.). «Новая версия libjpeg (версия 9d) от Independent JPEG Group уже доступна» . JPEGclub.org . Независимая группа JPEG . Проверено 25 января 2021 г.
  2. ^ Фризенхан, Боб (6 июня 2020 г.). «Re: [Libjpeg-devel-6x] 4 ошибки целочисленного переполнения в libjpeg-9c» . SourceForge.net . СоурсФордж . Проверено 25 января 2021 г. Единственное беспокойство заключалось в том, что Гвидо Волльбединг вряд ли подписан на этот список, а IJG JPEG по сути разрабатывается одним человеком.
  3. ^ «Независимая группа JPEG» . Проверено 27 января 2024 г.
  4. ^ JPEG JFIF
  5. ^ Описание настроек и опций Jpegcrop
  6. ^ Киноигры >> Самым большим провалом нашей патентной системы было... Архивировано 1 сентября 2012 г. в Wayback Machine.
  7. ^ 680385 - Firefox не отображает файлы JPEG с арифметической кодировкой.
  8. ^ Новые возможности jpegtran
  9. ^ Домашняя страница JPEG
  10. ^ «libjpeg-турбо» . libjpeg-турбо .
  11. ^ Jump up to: а б Андре Крамер (heise.de-Newsticker), 14 января 2013 г.: Кодер Mozilla улучшает сжатие JPEG
  12. Себастьян Грюнер, 16 июля 2014 г.: MozJPEG 2.0: Facebook поддерживает кодировщик JPEG Mozilla.
  13. ^ «CloudFlare хочет внести свой вклад в разработку JPEG-кодировщика Mozilla» . 30 июля 2014 г.
  14. ^ Jump up to: а б «ISO/IEC 10918-7:2019 Информационные технологии. Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном. Часть 7. Справочное программное обеспечение» . ИСО . «T.873 (19 мая): Информационные технологии. Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном: Справочное программное обеспечение» . www.itu.int .
  15. ^ «Представляем Jpegli: новую библиотеку кодирования JPEG» . Блог Google с открытым исходным кодом. 3 апреля 2024 года. Архивировано из оригинала 3 апреля 2024 года . Проверено 4 апреля 2024 г.
  16. ^ Jump up to: а б «libjpeg: обзор изменений API/ABI» . Проверено 28 октября 2017 г.
  17. ^ Jump up to: а б Манс Рулгард (Hardwarebug.org), 4 августа 2009 г.: IJG вернулся. Архивировано 16 июля 2014 г. на Wayback Machine.
  18. ^ Jump up to: а б Том Лейн, 16 января 2013 г.: jpeg-9, совместимость API/ABI и будущая роль этого проекта.
  19. ^ Jump up to: а б «А как насчет libjpeg v9?» . команда libjpeg-turbo . Проверено 8 февраля 2013 г.
  20. Манс Рулгард (Hardwarebug.org), 1 февраля 2010 г.: IJG снова замахивается и промахивается.
  21. ^ «Кодирование неподвижных изображений на основе ITU-T T.81 (JPEG-1) с использованием альтернативного арифметического кодера» (pdf). Сентябрь 2009 года.
  22. ^ Jump up to: а б «libjpeg-turbo | О проекте / Исследование полезности масштабирования DCT и SmartScale» . libjpeg-turbo.org .
  23. ^ Предложение ITU-T JPEG-Plus R3
  24. ^ Эволюция JPEG
  25. ^ JPEG 9 Кодирование без потерь
  26. ^ «Либджпег» . Гитхаб . 6 октября 2021 г.
  27. ^ Программное обеспечение, которое использует или предоставляет libjpeg-turbo . 9 февраля 2012 г.
  28. ^ Проблема 48789 — хром — используйте libjpeg-turbo вместо libjpeg . 14 апреля 2011 г.
  29. ^ Ошибка 698519 — Обновление до libjpeg-turbo 1.2 . 28 февраля 2012 г.
  30. ^ libjpeg для F14 . 9 февраля 2012 г.
  31. ^ Файл README libjpeg-turbo. Архивировано 14 декабря 2018 г. на Wayback Machine.
  32. ^ «Релизы · mozilla/mozjpeg» . github.com . Проверено 14 августа 2022 г.
  33. Андреас Донат (golem.de), 6 марта 2014 г.: Mozilla хочет лучше сжимать файлы JPEG.
  34. ^ «Представляем Jpegli: новую библиотеку кодирования JPEG» . Блог Google с открытым исходным кодом. 3 апреля 2024 года. Архивировано из оригинала 3 апреля 2024 года . Проверено 4 апреля 2024 г.
  35. ^ «Jpeg — Jpeg Xt» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 5f52652454142d14715f9600c70df38d__1720537140
URL1:https://arc.ask3.ru/arc/aa/5f/8d/5f52652454142d14715f9600c70df38d.html
Заголовок, (Title) документа по адресу, URL1:
libjpeg - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)