Разработчики) | Независимая группа JPEG Гвидо Фоллбединг (сопровождающий) [1] [2] |
---|---|
Первый выпуск | 7 октября 1991 г . |
Стабильный выпуск | 9д / 12 января 2020 г . |
Написано в | C |
Операционная система | Кроссплатформенность |
Тип | библиотека |
Лицензия | Custom BSD -like ( бесплатное программное обеспечение ) |
Веб-сайт | ijg |
libjpeg - это бесплатная библиотека с функциями для работы с форматом данных изображения JPEG . Он реализует кодек JPEG (кодирование и декодирование) вместе с различными утилитами для обработки данных JPEG. Он написан на C и распространяется как бесплатное программное обеспечение вместе с исходным кодом в соответствии с условиями специальной разрешающей ( BSD- подобной) лицензии на бесплатное программное обеспечение, которая требует указания авторства . Оригинальный вариант поддерживается и публикуется Independent JPEG Group (IJG). Между тем есть несколько вилок с дополнительными функциями.
Изображения JPEG JFIF широко используются в Интернете. Степень сжатия можно регулировать для достижения желаемого компромисса между размером файла и визуальным качеством. [3]
Утилиты [ править ]
Следующие служебные программы поставляются вместе с libjpeg:
- cjpeg и djpeg
- для выполнения преобразования между JPEG и некоторыми другими популярными форматами файлов изображений.
- rdjpgcom и wrjpgcom
- для вставки и извлечения текстовых комментариев в файлы JPEG.
- jpegtran
- для преобразования существующих файлов JPEG.
jpegtran [ править ]
Командная строка программа jpegtran предоставляет несколько возможностей для переформатирования и перекодирования представления DCT коэффициентов, для преобразования фактических данных изображения и для отбрасывания вспомогательных данных в файлах JPEG, соответственно. Преобразования, касающиеся представления коэффициентов, включают:
- оптимизация уровня кодирования Хаффмана файла JPEG для увеличения сжатия,
- преобразование между прогрессивным и последовательным форматами JPEG,
- преобразование между кодированием Хаффмана и арифметическим кодированием на уровне энтропийного кодирования . [4] [5] [6]
Каждое из этих преобразований полностью без потерь и обратимо. Преобразования данных изображения включают:
- исключить нестандартные данные для конкретного приложения, вставленные некоторыми программами обработки изображений,
- выполнять определенные преобразования в файле, например:
- отбрасывание цветовых каналов (преобразование в оттенки серого),
- вращение и переворачивание с шагом 90 градусов,
- обрезка по границам блока изображения (каждые 8 × 8 или 16 × 16 пикселей),
- масштабирование. [7]
Они без потерь и обратимы только в отношении сохраненных данных изображения. Перекодирование с многократным квантованием с потерями данных изображения ( потеря генерации ) не происходит.
Существует связанное с ним приложение Windows, Jpegcrop , которое предоставляет пользовательский интерфейс для jpegtran . Для Unix-подобных систем, таких как Linux, существует бесплатный CropGUI с аналогичной функциональностью. Дополнительные программы, поддерживающие функции преобразования JPEG без потерь на основе кода IJG, приведены в Списке приложений без потерь .
История [ править ]
Реализация JPEG от Independent JPEG Group (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а | 1993-02-18 | ||
5 | 1994-09-24 | Внутренние улучшения и переработанный API | |
5а | 1994-12-07 | ||
5b | 1995-03-15 | ||
6 | 1995-08-02 | Прогрессивный JPEG jpegtran (преобразование между базовым и прогрессивным) | |
6а | 1996-02-07 | ||
6b | 1998-03-27 | jpegtran расширен на вращение без потерь Используется libjpeg-turbo | |
Собственные несовместимые расширения | |||
7 | 2009-06-27 | jpegtran расширен до урожая без потерь T.851 Арифметическое кодирование [18] | |
8 | 2010-01-10 | Внутренние исправления jpegtran расширены для использования SmartScale | |
8а | 2010-02-28 | RGBA | |
8b | 2010-05-16 | ||
8c | 2011-01-16 | Переменный размер блока DCT | |
8d | 2012-01-15 | RGB JPEG (без преобразования цвета в YCbCr) | |
9 | 2013-01-13 | Цвет YCoCg Сжатие без потерь (1x1 DCT) [21] | |
9а | 2014-01-19 | " JFIFv 2" scRGB Широкая цветовая гамма (стандарт неизвестен) 8–12-битный цвет (исходный JPEG) | |
9b | 2016-01-17 | ||
9c | 2018-01-14 | ||
9d | 2020-01-12 |
Легенда: | Старая версия, не поддерживается | Старая версия, все еще поддерживается | Текущая стабильная версия |
---|
Вилки [ править ]
Хорошо известными форками являются libjpeg-turbo, оптимизирующий скорость выполнения, и mozjpeg, оптимизирующий файлы меньшего размера.
Существует также библиотека с аналогичным названием из ISO , цель которой - полная реализация стандартов JPEG, JPEG XT и JPEG-LS . [22]
libjpeg-turbo [ править ]
Разработчики) | Проект libjpeg-turbo |
---|---|
Первый выпуск | 2010 |
Стабильный выпуск | 2.1.0 / 24 апреля 2021 г . |
Веб-сайт | libjpeg-turbo .org |
libjpeg-турбо является вилка из 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.
mozjpeg [ править ]
Разработчики) | Mozilla Research |
---|---|
Первый выпуск | 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 libjpeg [ править ]
Разработчики) | Томас Рихтер / Справочник JPEG, AhG |
---|---|
Первый выпуск | 27 июля 2012 г . |
Стабильный выпуск | 1.55 / 20 июля 2018 г . |
Лицензия | GNU GPLv3 |
Веб-сайт | github .com / thorfdbg / libjpeg |
Совместная группа экспертов по фотографии ISO / IEC поддерживает эталонную программную реализацию для базового JPEG (ISO / IEC 10918-1 и 18477-1) и расширений JPEG XT (ISO / IEC 18477, части 2 и 6-9), а также для файлов JPEG без потерь. LS (ISO / IEC 14495). [30] Хотя он также называется libjpeg, он не связан с исходным кодом, предоставленным Independent JPEG Group (IJG), и не поддерживает проприетарные расширения, представленные IJG с 2007 года.
См. Также [ править ]
- Редактирование без потерь
- Кодировщик Guetzli JPEG
Ссылки [ править ]
- ^ Göhler, Lars (29 апреля 2020). «Доступна новая версия libjpeg (Ver. 9d) от Independent JPEG Group» . JPEGclub.org . Независимая группа JPEG . Проверено 25 января 2021 .
- ^ Friesenhahn, Боб (6 июня 2020). "Re: [Libjpeg-devel-6x] 4 ошибки целочисленного переполнения в libjpeg-9c" . SourceForge.net . SourceForge . Проверено 25 января 2021 .
Единственная проблема заключалась в том, что Гвидо Фоллбединг вряд ли подписался на этот список, а IJG JPEG в основном разработан одним человеком.
- ^ JPEG JFIF
- ^ Описание настроек и параметров Jpegcrop
- ^ Filmic Games >> Самым большим провалом нашей патентной системы был ... Архивировано 1 сентября 2012 г. в Wayback Machine
- ^ 680385 - Firefox не показывает JPEG с арифметическим кодированием.
- ^ Новые возможности jpegtran
- ^ Домашняя страница JPEG
- ^ http://libjpeg-turbo.virtualgl.org/
- ^ a b "libjpeg: обзор изменений API / ABI" . Проверено 28 октября 2017 . CS1 maint: обескураженный параметр ( ссылка )
- ^ a b Манс Руллгард (Hardwarebug.org), 4 августа 2009 г .: IJG вернулся. Архивировано 16 июля 2014 г. на Wayback Machine.
- ^ a b Том Лейн, 16 января 2013 г .: jpeg-9, совместимость API / ABI и будущая роль этого проекта
- ^ a b "А как насчет libjpeg v9?" . Команда libjpeg-turbo . Проверено 8 февраля 2013 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Mans Rullgard (Hardwarebug.org), 1 февраля 2010: IJG качается снова, и промахи
- ^ a b Андре Крамер (heise.de-Newsticker), 14 января 2013 г .: Mozilla-Encoder verbessert JPEG-Kompression
- ^ Себастьян Грюнер, 16 июля 2014 г .: mozjpeg 2.0: Facebook unterstützt JPEG-Encoder von Mozilla
- ^ http://www.soeren-hentzschel.at/mozilla/2014/07/30/cloudflare-moechte-zu-mozillas-jpeg-encoder-beitragen/
- ^ «Кодирование неподвижных изображений на основе ITU-T T.81 (JPEG-1) с использованием альтернативного арифметического кодера» (pdf). Сентябрь 2009 г.
- ^ Предложение ITU-T JPEG-Plus R3
- ^ Эволюция JPEG
- ^ JPEG 9 Кодирование без потерь
- ^ https://github.com/thorfdbg/libjpeg
- ^ Программное обеспечение, которое использует или предоставляет libjpeg-turbo . 9 февраля 2012 г.
- ^ Проблема 48789 - хром - используйте libjpeg-turbo вместо libjpeg . 14 апреля 2011 г.
- ^ Ошибка 698519 - Обновление до libjpeg-turbo 1.2 . 28 февраля 2012 г.
- ^ libjpeg для F14 . 9 февраля 2012 г.
- ^ Файл README libjpeg-turbo. Архивировано 14 декабря 2018 г. на Wayback Machine.
- ^ "Выпуски · mozilla / mozjpeg" . github.com . Проверено 14 апреля 2021 .
- ^ Andreas Донат (golem.de), 6 марта 2014: Mozilla будет JPEGs Бессер komprimieren
- ^ https://jpeg.org/jpegxt/software.html
Внешние ссылки [ править ]
Викискладе есть медиафайлы по теме libjpeg . |
- Официальный сайт Independent JPEG Group
- Часто задаваемые вопросы по JPEG
- JPEGclub - Дополнительные возможности для libjpeg
- Двоичный пакет libjpeg для Windows (в GnuWin32 в SourceForge.net)
- libjpeg-turbo , ABI- / API-совместимый форк libjpeg, который использует инструкции x86 SIMD для достижения существенного ускорения по сравнению с эталонной реализацией.
- mozjpeg - форк для оптимизации размера файла на GitHub
- Найман, Роберт; Аас, Джош (6 августа 2014 г.). «Использование mozjpeg для создания эффективных JPEG-файлов» . Хаки . Mozilla.