Libjpeg - Википедия - libjpeg
Разработчики) | Независимая группа JPEG |
---|---|
изначальный выпуск | 7 октября 1991 г. |
Стабильный выпуск | 9д / 12 января 2020 г. |
Написано в | C |
Операционная система | Кроссплатформенность |
Тип | библиотека |
Лицензия | Обычай BSD -подобно (бесплатно программное обеспечение ) |
Интернет сайт | ijg |
libjpeg это бесплатный библиотека с функции для обработки JPEG формат данных изображения. Он реализует JPEG кодек (кодирование и декодирование) наряду с различными утилитами для обработки данных JPEG. C и распространяется как бесплатно программное обеспечение вместе со своим исходный код по условиям обычаев снисходительный (BSD -like) лицензия свободных программ, требующая атрибуция. Оригинальный вариант поддерживается и публикуется Independent JPEG Group (IJG). Между тем, есть несколько вилки с дополнительными функциями.
JPEG JFIF изображения широко используются в сети. Степень сжатия можно регулировать для достижения желаемого компромисса между размером файла и визуальным качеством.[1]
Утилиты
Следующие служебные программы поставляются вместе с libjpeg:
- cjpeg и djpeg
- для выполнения преобразования между JPEG и некоторыми другими популярными форматами файлов изображений.
- rdjpgcom и wrjpgcom
- для вставки и извлечения текстовых комментариев в файлы JPEG.
- jpegtran
- для преобразования существующих файлов JPEG.
jpegtran
В командная строка программа jpegtran предоставляет несколько функций для переформатирования и перекодирования представления DCT коэффициенты для преобразования фактических данных изображения и для отбрасывания вспомогательных данных в файлах JPEG соответственно. Преобразования, касающиеся представления коэффициентов, включают:
- оптимизация Кодирование Хаффмана слой файла JPEG для увеличения сжатия,
- преобразование между прогрессивным и последовательным форматами JPEG,
- конверсия между Хаффманом и арифметическое кодирование в энтропийное кодирование слой.[2][3][4]
Каждое из этих преобразований полностью без потерь и обратимо. Преобразования данных изображения включают:
- исключить нестандартные данные для конкретного приложения, вставленные некоторыми программами обработки изображений,
- выполнять определенные преобразования в файле, например:
Это без потерь и обратима только в отношении сохраненных данных изображения. Повторное кодирование с повторным квантованием с потерями данных изображения (потеря поколения ) не имеет места.
Есть связанное приложение Windows, Jpegcrop, который предоставляет пользовательский интерфейс для jpegtran. За Unix-подобные системы подобно Linux есть бесплатный CropGUI с аналогичной функциональностью. Больше программ, поддерживающих функции преобразования JPEG без потерь на основе кода IJG, приведены на Список приложений без потерь.
История
Реализация JPEG от Independent JPEG Group (IJG) была впервые публично выпущена 7 октября 1991 года и с тех пор претерпела значительные изменения. Том Лейн. Открытый исходный код реализация IJG была одним из основных пакетов с открытым исходным кодом и была ключом к успеху стандарта JPEG. Многие компании включили его в различные продукты, такие как редакторы изображений и веб-браузеры.[6]
Для версии 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.[7]
После 11 лет и смены руководства IJG выпустила новые версии libjpeg (с 7 по 9), каждая из которых нарушила совместимость ABI с предыдущими версиями.[8] Изменения, которые проводились в перспективе после 6х серии, не были реализованы.[9]В версии 7 поддержка арифметическое кодирование введен, который ранее был отклонен из-за патент ситуация, а также функция кадрирования в jpegtran (-обрезать
).[9]
Версии 8 и 9 служили в основном для введения спорных[10] несовместимые расширения формата. Они считаются неэффективными и уступающими существующим стандартизированным решениям.[11][12] Их стандартизация была отклонена после представления в ITU-T. Первоначальный организатор Том Лейн и другие критикуют эти изменения как отход от целей IJG.[10]
4 марта 2014 года первая версия форка оптимизации размера файла mozjpeg был опубликован. Для этой версии Джош Аас из Mozilla Research переработал Perl сценарий jpegcrush из x264 Лорен Мерритт, главный разработчик, и интегрировал его в кодовую базу libjpeg-turbo.[13]
10 июля 2014 года Mozilla выпустила версию 2.0, в которой в основном добавлено квантование решетчатых диаграмм и теперь можно также уменьшить размер базовых файлов JPEG. Facebook, Inc. пожертвовала 60000 доллары для разработки следующей версии,[14] и CloudFlare назначен разработчик для улучшения mozjpeg.[15]
Версии
Версия | Вышел | Новые возможности | |
---|---|---|---|
Совместимость с 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 Арифметическое кодирование[16] | |
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)[19] | |
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 стандарты.[20]
libjpeg-turbo
Разработчики) | Проект libjpeg-turbo |
---|---|
изначальный выпуск | 2010 |
Стабильный выпуск | 2.0.4 / 31 декабря 2019 г. |
Интернет сайт | libjpeg-turbo.org |
libjpeg-turbo - это вилка libjpeg, который использует SIMD инструкции для ускорения базового кодирования и декодирования JPEG. Многие проекты теперь используют libjpeg-turbo вместо libjpeg, включая популярные дистрибутивы GNU / Linux (Fedora, Debian, Mageia, openSUSE, ...), Mozilla, и Хром.[21][22][23] Помимо производительности, некоторые проекты решили использовать libjpeg-turbo, потому что это позволяет им сохранять обратную ABI совместимость со старым выпуском libjpeg v6b.[24] libjpeg v7, v8 и v9 нарушили совместимость ABI с предыдущими выпусками.[8]
libjpeg-turbo можно настроить для совместимости с libjpeg v7 или v8 ABI, но он не реализует полный набор функций в последних выпусках IJG, включая расширение формата SmartScale.[25] Проект libjpeg-turbo решил не поддерживать SmartScale, сославшись на опасения по поводу того, что это не ITU-T стандарт и цитируют собственное исследование, которое ставит под сомнение полезность этой функции. В дополнение, поскольку единственная важная новая функция в libjpeg v9 относится к формату SmartScale, проект libjpeg-turbo решил отказаться от эмуляции libjpeg v9.[11] Следовательно, файлы SmartScale, созданные libjpeg v8 и более поздними версиями, не будут правильно распакованы libjpeg-turbo.
mozjpeg
mozjpeg пробует несколько разбиений спектра коэффициентов DCT | |
Разработчики) | Mozilla Research |
---|---|
изначальный выпуск | 4 марта 2014 г. |
Стабильный выпуск | 3.3.1 / 17 марта 2018 г.[26] |
Интернет сайт | github.com/mozilla/mozjpeg |
mozjpeg - это форк libjpeg-turbo, созданный Джошем Аасом и другими из Mozilla Research. Он направлен на ускорение загрузки веб-страниц за счет уменьшения размера файла (примерно на 10%) и, следовательно, времени передачи за счет повышения эффективности кодирования при сохранении качества изображения. Для достижения этого он использует большую вычислительную мощность для кодирования (асимметрия), сохраняя при этом полную совместимость со стандартом JPEG и не требуя изменений на стороне декодера.
Методы, которые mozjpeg использует для достижения высокого уровня сжатия, включают оптимизацию Хаффман деревьев, используя прогрессивное кодирование для оптимального разделения спектра DCT-коэффициентов на отдельные сканы, а также за счет использования квантование решеток. Кроме того, пресеты агрессивно настроены на минимизацию размеров файлов.
Помимо libjpeg-turbo, mozjpeg также основан на jpegcrush, Perl сценарий Лорен Мерритт.[13][27]
ISO libjpeg
Разработчики) | Томас Рихтер / Справка по JPEG, AhG |
---|---|
изначальный выпуск | 27 июля 2012 г. |
Стабильный выпуск | 1.55 / 20 июля 2018 г. |
Лицензия | GNU GPLv3 |
Интернет сайт | github |
ISO / IEC Объединенная группа экспертов по фотографии поддерживает эталонную программную реализацию для базовой JPEG (ИСО / МЭК 10918-1 и 18477-1) и JPEG XT расширения (ISO / IEC 18477, части 2 и 6-9), а также без потерь JPEG-LS (ИСО / МЭК 14495).[28] Хотя он также называется libjpeg, он не связан с исходным кодом, предоставленным Independent JPEG Group (IJG), и не поддерживает проприетарные расширения, представленные IJG с 2007 года.
Смотрите также
Рекомендации
- ^ JPEG JFIF
- ^ Описание настроек и параметров Jpegcrop
- ^ Киноигры >> Самым большим провалом нашей патентной системы был ... В архиве 2012-09-01 на Wayback Machine
- ^ 680385 - Firefox не показывает JPEG с арифметическим кодированием
- ^ Новые возможности jpegtran
- ^ Домашняя страница JPEG
- ^ http://libjpeg-turbo.virtualgl.org/
- ^ а б "libjpeg: обзор изменений API / ABI". Получено 2017-10-28.
- ^ а б Манс Руллгард (Hardwarebug.org), 4 августа 2009 г .: IJG вернулся В архиве 2014-07-16 в Wayback Machine
- ^ а б Том Лейн, 16 января 2013 г .: jpeg-9, совместимость API / ABI и будущая роль этого проекта
- ^ а б "А как насчет libjpeg v9?". команда libjpeg-turbo. Получено 8 февраля, 2013.
- ^ Манс Руллгард (Hardwarebug.org), 1 февраля 2010 г .: IJG снова замахивается и промахивается
- ^ а б Андре Крамер (heise.de-Newsticker), 14 января 2013 г .: Mozilla-Encoder поддерживает JPEG-Kompression
- ^ Себастьян Грюнер, 16 июля 2014 г .: mozjpeg 2.0: Facebook unterstützt JPEG-Encoder от 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 В архиве 2018-12-14 в Wayback Machine
- ^ "mozilla / mozjpeg". GitHub. 17 марта 2018 г.. Получено 17 сентября, 2018.
- ^ Андреас Донат (golem.de), 6 марта 2014 г .: Mozilla выпустит JPEG-файлы без компромиссов
- ^ https://jpeg.org/jpegxt/software.html
внешняя ссылка
- Официальный сайт 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.