Как устроен формат JPEG / Хабр
Изображения формата JPEG встречаются повсюду в нашей цифровой жизни, но за этим покровом осведомлённости скрываются алгоритмы, устраняющие детали, не воспринимаемые человеческим глазом. В итоге получается высочайшее визуальное качество при наименьшем размере файла – но как конкретно всё это работает? Давайте посмотрим, чего именно не видят наши глаза!
Легко принять, как само собой разумеющееся, возможность отправить фотку другу, и не волноваться по поводу того, какое устройство, браузер или операционную систему он использует – однако так было не всегда. К началу 1980-х компьютеры умели хранить и показывать цифровые изображения, однако по поводу наилучшего способа для этого существовало множество конкурирующих идей. Нельзя было просто отправить изображение с одного компьютера на другой и надеяться, что всё заработает.
Для решения этой проблемы в 1986 году был собран комитет экспертов со всего мира под названием «Объединённая группа экспертов по фотографии» (Joint Photographic Experts Group, JPEG), основанный в рамках совместной работы Международной организации по стандартизации (ISO) и Международной электротехнической комиссии (IEC) – двух международных организаций по стандартизации, штаб-квартира которых расположена в Женеве (Швейцария).
Группа людей под названием JPEG создала стандарт сжатия цифровых изображений JPEG в 1992 году. Любой человек, использовавший интернет, вероятно, встречался с изображениями в кодировке JPEG. Это самый распространённый способ кодирования, отправки и хранения изображений. От веб-страниц до емейла и соцсетей, JPEG используется миллиарды раз в день – практически каждый раз, когда мы смотрим изображение онлайн или отправляем его. Без JPEG веб был бы менее ярким, более медленным, и, вероятно, в нём было бы меньше фоток котиков!
Эта статья – о том, как декодировать JPEG изображение. Иначе говоря, о том, что требуется для преобразования сжатых данных, хранящихся на компьютере, в изображение, появляющееся на экране. Об этом стоит знать не только потому, что это важно для понимания технологии, которую мы используем ежедневно, но и потому, что раскрывая уровни сжатия, мы лучше узнаём восприятие и зрение, а также то, к каким деталям наши глаза восприимчивей всего.
Кроме того, играться с изображениями таким способом очень интересно.
Заглядывая внутрь JPEG
На компьютере всё хранится в виде последовательности двоичных чисел. Обычно эти биты, нули и единицы, группируются по восемь, составляя байты. Когда вы открываете JPEG изображение на компьютере, что-то (браузер, операционка, ещё что-то) должно декодировать байты, восстановив изначальное изображение в виде списка цветов, которые можно показать.
Если вы скачаете эту умильную фотографию кота и откроете её в текстовом редакторе, вы увидите кучу бессвязных символов.
Здесь я использую Notepad++ для изучения содержимого файла, поскольку обычные текстовые редакторы, типа Notepad из Windows, испортят двоичный файл после сохранения, и он перестанет удовлетворять формату JPEG.
Открывая изображение в текстовом редакторе, вы сбиваете компьютер с толку, точно так же, как вы сбиваете с толку свой мозг, когда потрёте глаза и начинаете видеть цветные пятна!
Эти пятна, которые вы видите, известны, как фосфены, и не являются результатом воздействия светового стимула или галлюцинациями, порождёнными разумом.
Забавно думать о том, насколько компьютеры похожи на мозг, однако это также является полезной аналогией, иллюстрирующей, насколько сильно значение данных – передаваемых по телу нервами, или хранящихся на компьютере – зависит от их интерпретации. Все двоичные данные состоят из нулей и единиц, базовых компонентов, способных передавать информацию любого вида. Ваш компьютер часто догадывается, как интерпретировать их при помощи подсказок, например, расширений файлов.
Чтобы понять, как декодировать JPEG, нам нужно увидеть сами изначальные сигналы – двоичные данные. Это можно сделать при помощи шестнадцатеричного редактора, или же прямо на веб-странице оригинала статьи! Там есть изображение, рядом с которым в текстовом поле приведены все его байты (кроме заголовка), представленные в десятичном виде. Вы можете менять их, и скрипт перекодирует и выдаст новое изображение на лету.
Можно узнать многое, просто играясь с этим редактором. К примеру, можете ли вы сказать, в каком порядке хранятся пиксели?
В этом примере странно то, что изменение некоторых чисел вообще не влияет на изображение, а, например, если заменить число 17 на 0 в первой строке, то фотка полностью испортится!
Другие изменения, например, замена 7 на строке 1988 на число 254 изменяет цвет, но только последующих пикселей.
Возможно, наиболее странным будет то, что некоторые числа меняют не только цвет, но и форму изображения.
И вне зависимости от того, какое JPEG изображение вы используете, вы всегда будете находить эти загадочные шахматные последовательности при редактировании байтов.
Играясь с редактором, тяжело понять, как воссоздаётся фотка из этих байтов, поскольку JPEG сжатие состоит из трёх различных технологий, применяющихся последовательно по уровням. Мы изучим каждую из них отдельно, чтобы раскрыть наблюдаемое нами загадочное поведение.
Три уровня JPEG сжатия:
- Цветовая субдискретизация.
- Дискретное косинусное преобразование и дискретизация.
Дабы вы могли представить себе масштабы сжатия, обратите внимание, что изображение, приведённое выше, представляет 79 819 чисел, то есть, около 79 Кб. Если бы мы хранили его без сжатия, для каждого пикселя потребовалось бы по три числа – для красной, зелёной и синей составляющей. Это составило бы 917 700 чисел, или ок. 917 Кб. В результате JPEG сжатия итоговый файл уменьшился больше чем в 10 раз!
На самом деле, это изображение можно сжать гораздо сильнее. Снизу приведены два изображения рядом – фотка справа была ужата до 16 Кб, то есть в 57 раз меньше, чем несжатая версия!
Если присмотреться, будет видно, что эти изображения не идентичны. Оба они – картинки с JPEG сжатием, однако правая гораздо меньше по объёму. Также она выглядит чуть похуже (посмотрите на квадраты цветов фона). Поэтому JPEG ещё называют сжатием с потерями; в процессе сжатия изображение меняется и теряет некоторые детали.
1. Цветовая субдискретизация
Вот изображение с применением только первого уровня сжатия.
(Интерактивная версия – в оригинале статьи). Удаление одного числа рушит все цвета. Однако если удалить ровно шесть чисел, это практически не влияет на изображение.
Теперь числа чуть проще расшифровать.
Можно видеть, что эти числа не обозначают стандартные красную, зелёную и синюю компоненты, поскольку если заменить все числа нулями, мы получим зелёное изображение (а не белое).
Это потому, что эти байты обозначают Y (яркость),
Cb (относительная голубизна),
и Cr (относительная краснота) картинки.
Почему не использовать RGB? Ведь именно так работает большинство современных экранов. Ваш монитор может демонстрировать любой цвет, включая красный, зелёный и синий цвета с разной интенсивностью для каждого пикселя. Белый получается включением всех трёх на полную яркость, а чёрный – их отключением.
Это также очень похоже на работу человеческого глаза. Цветовые рецепторы наших глаз называются «колбочки», и делятся на три типа, каждый из которых более чувствителен либо к красному, либо к зелёному, либо к синему цветам [колбочки S-типа чувствительны в фиолетово-синей (S от англ. Short — коротковолновый спектр), M-типа — в зелено-желтой (M от англ. Medium — средневолновый), и L-типа — в желто-красной (L от англ. Long — длинноволновый) частях спектра. Наличие этих трёх видов колбочек (и палочек, чувствительных в изумрудно-зелёной части спектра) даёт человеку цветное зрение. / прим. перев.]. Палочки, другой тип фоторецепторов в наших глазах, способны улавливать только изменения в яркости, однако они гораздо более чувствительные. В наших глазах есть около 120 млн палочек и всего 6 млн колбочек.
Поэтому наши глаза гораздо лучше замечают изменения в яркости, чем изменения в цвете. Если отделить цвет от яркости, можно убрать немного цвета, и никто ничего не заметит. Цветовая субдискретизация – это процесс представления цветовых компонентов изображения в меньшем разрешении по сравнению с компонентами яркости. В примере выше у каждого пикселя ровно один компонент Y, а у каждой отдельной группы из четырёх пикселей есть ровно одна компонента Cb и одна Cr. Поэтому изображение содержит в четыре раза меньше цветовой информации, чем было у оригинала.
Цветовое пространство YCbCr используется не только в JPEG. Его изначально придумали в 1938 году для телепередач. Не у всех есть цветной телевизор, поэтому разделение цвета и яркости позволило всем получать один и тот же сигнал, а телевизоры без цвета просто использовали только компонент яркости.
Поэтому удаление одного числа из редактора полностью рушит все цвета. Компоненты хранятся в виде Y Y Y Y Cb Cr (на самом деле, не обязательно в таком порядке – порядок хранения задаётся в заголовке файла). Удаление первого числа приведёт к тому, что первое значение Cb будет воспринято, как Y, Cr как Cb, и в целом получится эффект домино, переключающий все цвета картинки.
Спецификация JPEG не обязывает вас использовать YCbCr. Но в большинстве файлов она используются, поскольку она даёт изображения лучшего качества после субдискретизации по сравнению с RGB. Но вам не обязательно верить мне на слово. Посмотрите сами в табличке ниже, как будет выглядеть субдискретизация каждого отдельного компонента как в RGB, так и в YCbCr.
(Интерактивная версия – в оригинале статьи).
Удаление синего не так заметно, как красного или зелёного. Всё потому, что из шести миллионов колбочек в ваших глазах около 64% чувствительны к красному, 32% к зелёному и 2% к синему.
Субдискретизация компонента Y (слева внизу) видна лучше всего. Заметно даже небольшое изменение.
Преобразование изображения из RGB в YCbCr не уменьшает размер файла, но облегчает поиск менее заметных деталей, которые можно удалить. Сжатие с потерями происходит на втором этапе. В её основе лежит идея представления данных в более сжимаемом виде.
2. Дискретное косинусное преобразование и дискретизация
Этот уровень сжатия по большей части и определяет суть JPEG. После преобразования цветов в YCbCr компоненты сжимаются по отдельности, поэтому далее мы можем сконцентрироваться только на компоненте Y. И вот как выглядят байты компонента Y после применения этого уровня.
(Интерактивная версия – в оригинале статьи). В интерактивной версии клик на пикселе прокручивает редактор на строчку, которая его обозначает. Попробуйте поудалять числа с конца или добавить несколько нулей к определённому числу.
На первый взгляд, выглядит, как очень плохое сжатие. В изображении 100 000 пикселей, и для обозначения их яркости (Y-компоненты) требуется 102 400 чисел — это хуже, чем если вообще ничего не сжимать!
Однако обратите внимание на то, что большинство этих чисел равны нулю. Более того, все эти нули в конце строк можно удалять, не меняя изображение. Остаётся порядка 26 000 чисел, а это уже почти в 4 раза меньше!
На этом уровне находится секрет шахматных узоров. В отличие от других эффектов, которые мы видели, появление этих узоров не является глюком. Они – строительные блоки всего изображения. В каждой строчке редактора содержится ровно 64 числа, коэффициенты дискретного косинусного преобразования (DCT), соответствующие интенсивностям 64-х уникальных узоров.
Эти узоры формируются на основе графика косинуса. Вот, как выглядят некоторые из них:
8 из 64 коэффициентов
Ниже – изображение, демонстрирующее все 64 узора.
(Интерактивная версия – в оригинале статьи).
Эти узоры имеют особое значение, поскольку они формируют базис изображений размера 8х8. Если вы незнакомы с линейной алгеброй, то это означает, что любое изображение размера 8х8 можно получить из этих 64-х узоров. DCT – это процесс разбиения изображений на блоки 8х8 и преобразования каждого блока в комбинацию из этих 64 коэффициентов.
То, что любое изображение можно составить из 64 определённых узоров, кажется волшебством. Однако это то же самое, что сказать, что любое место на Земле можно описать двумя числами – широтой и долготой [с указанием полушарий / прим. перев.]. Мы часто считаем поверхность Земли двумерной, поэтому нам требуются всего два числа. Изображение 8х8 имеет 64 измерения, поэтому нам требуются 64 числа.
Пока непонятно, как это помогает нам в смысле сжатия. Если нам нужно 64 числа для представления изображения 8х8, почему этот способ будет лучше, чем просто хранить 64 компоненты яркости? Мы делаем это по той же причине, по которой мы превратили три числа RGB в три числа YCbCr: это позволяет нам удалить незаметные детали.
Сложно увидеть, какие именно детали удаляются на этом этапе, поскольку JPEG применяет DCT к блокам 8х8. Однако никто не запрещает нам применить его к целой картинке. Вот, как выглядит DCT по компоненте Y в применении к целой картинке:
С конца можно удалить более 60 000 чисел практически без заметных изменений на фотке.
Однако отметьте, что если мы обнулим первые пять чисел, разница будет очевидной.
Числа в начале обозначают изменения низкой частоты в изображении, и наши глаза улавливают их лучше всего. Числа ближе к концу обозначают изменения высоких частот, которые сложнее заметить. Чтобы «увидеть то, что не видно глазом», мы можем изолировать эти детали высокой частоты, обнулив первые 5000 чисел.
Мы видим все области изображения, в которых происходит наибольшее изменение от пикселя к пикселю. Выделяются глаза кота, его усы, махровое одеяло и тени в нижнем левом углу. Можно пойти и дальше, обнулив первые 10 000 чисел:
20 000:
40 000:
60 000:
Эти высокочастотные детали JPEG и удаляет на этапе сжатия. Преобразование цветов в коэффициенты DCT не несёт потерь. Потери образуются на шаге дискретизации, где удаляются величины высокой частоты или близкие к нулю. Когда вы понижаете качество сохранения JPEG, программа увеличивает порог количества удаляемых значений, что даёт уменьшение размера файла, но делает картинку более пикселизированной. Поэтому изображение в первом разделе, которое было в 57 раз меньше, так выглядело. Каждый блок 8х8 представлялся гораздо меньшим количеством коэффициентов DCT по сравнению с более качественной версией.
Можно сделать такой крутой эффект, как постепенная потоковая передача изображений. Можно вывести размытую картинку, которая становится всё более детализированной по мере скачивания всё большего количества коэффициентов.
Вот, просто для интереса, что получится при использовании всего 24 000 чисел:
Или всего 5000:
Очень размыто, но как будто узнаваемо!
3. Кодирование длин серий, дельта и Хаффмана
Пока что все этапы сжатия шли с потерями. Последний этап, наоборот, идёт без потерь. Он не удаляет информацию, однако значительно уменьшает размер файла.
Как можно сжать что-либо, не отбрасывая информацию? Представьте, как бы мы описали простой чёрный прямоугольник 700 х 437.
JPEG использует для этого 5000 чисел, но можно достичь гораздо лучшего результата. Можете представить себе схему кодирования, которая бы описывала подобное изображение как можно меньшим количеством байт?
Минимальная схема, которую смог придумать я, использует четыре: три для обозначения цвета, и четвёртый – сколько пикселей имеет такой цвет. Идея представления повторяющихся значений таким сжатым способом называется кодирование длин серий. Она не имеет потерь, поскольку мы можем восстановить закодированные данные в первозданном виде.
Размер файла JPEG с чёрным прямоугольником гораздо больше 4 байт – вспомните, что на уровне DCT сжатие применяется к блокам 8х8 пикселей. Поэтому как минимум нам нужен один коэффициент DCT на каждые 64 пикселя. Один нам нужен потому, что вместо того, чтобы хранить один DCT-коэффициент, за которым идёт 63 нуля, кодирование длин серий позволяет нам хранить одно число и обозначить, что «все остальные – нули».
Дельта-кодирование – это техника, при которой каждый байт содержит отличие от какого-то значения, а не абсолютную величину. Поэтому редактирование определённых байтов изменяет цвет всех остальных пикселей. К примеру, вместо того, чтобы хранить
12 13 14 14 14 13 13 14
Мы могли бы начать с 12, а потом просто обозначать, сколько надо прибавить или отнять, чтобы получить следующее число. И эта последовательность в дельта-кодировании приобретает вид:
12 1 1 0 0 -1 0 1
Преобразованные данные не получаются меньше исходных, но сжимать их уже легче. Применение дельта-кодирования перед кодированием длин серий может сильно помочь, оставаясь при этом сжатием без потерь.
Дельта-кодирование – одна из немногих техник, применяемых вне блоков 8х8. Из 64 коэффициентов DCT один – просто постоянная волновая функция (сплошной цвет). Он представляет среднюю яркость каждого блока для компонент яркости, или среднюю голубизну для компонентов Cb, и так далее. Первое значение каждого DCT-блока называется DC-значением, и каждое DC-значение проходит дельта-кодирование по отношению к предыдущим. Поэтому изменение яркости первого блока повлияет на все блоки.
Остаётся последняя загадка: как изменение единственного числа полностью портит всю картинку? Пока таких свойств у уровней сжатия не было. Ответ лежит в заголовке JPEG. Первые 500 байт содержат метаданные об изображении – ширину, высоту, и проч., и пока мы с ними не работали.
Без заголовка практически невозможно (ну, или очень сложно) декодировать JPEG. Это будет выглядеть так, будто я пытаюсь описать вам картину, и начинаю изобретать слова для того, чтобы передать своё впечатление. Описание будет, вероятно, весьма сжатым, поскольку я могу изобретать слова именно с тем значением, которое я хочу передать, однако для всех остальных они не будут иметь смысла.
Звучит глупо, но именно так это и происходит. Каждое изображение JPEG сжимается с кодами, специфичными именно для него. Словарь кодов хранится в заголовке. Эта техника называется «код Хаффмана», а словарь – таблицей Хаффмана. В заголовке таблица отмечена двумя байтами – 255 и потом 196. У каждого цветового компонента может быть своя таблица.
Изменения таблиц радикально повлияют на любое изображение. Хороший пример – поменять на 15-й строке 1 на 12.
Это происходит потому, что в таблицах указывается, как нужно читать отдельные биты. Пока что мы работали только с двоичными числами в десятичном виде. Но это скрывает от нас тот факт, что если вы хотите хранить число 1 в байте, то оно будет выглядеть, как 00000001, поскольку в каждом байте должно быть ровно восемь бит, даже если нужен из них всего один.
Потенциально это большая трата места, если у вас есть много мелких чисел. Код Хаффмана – это техника, позволяющая нам ослабить это требование, по которому каждое число должно занимать восемь бит. Это значит, что если вы видите два байта:
234 115
То, в зависимости от таблицы Хаффмана, это могут быть три числа. Чтобы их извлечь, вам надо сначала разбить их на отдельные биты:
11101010 01110011
Затем обращаемся к таблице, чтобы понять, как их группировать. К примеру, это могут быть первые шесть битов, (111010), или 58 в десятичной системе, за которыми идут пять битов (10011), или 19, и наконец последние четыре бита (0011), или 3.
Поэтому очень сложно разобраться в байтах на этом этапе сжатия. Байты не представляют то, что кажется. Не буду углубляться в детали работы с таблицей в данной статье, но материалов по этому вопросу в сети достаточно.
Один из интересных трюков, которые можно проделать, зная это – отделить заголовок от JPEG и хранить его отдельно. По сути, получится, что файл сможете прочесть только вы. Facebook проделывает это, чтобы ещё сильнее уменьшать файлы.
Что ещё можно сделать – совсем немного изменить таблицу Хаффмана. Для других это будет выглядеть, как испорченная картинка. И только вы будете знать волшебный вариант её исправления.
Подведём итоги: так что же нужно для декодирования JPEG? Необходимо:
- Извлечь таблицу (таблицы) Хаффмана из заголовка и декодировать биты.
- Извлечь коэффициенты дискретного косинусного преобразования для каждого компонента цвета и яркости для каждого блока 8х8, проведя обратные преобразования кодирования длин серий и дельты.
- Скомбинировать косинусы на основе коэффициентов, чтобы получить значения пикселей для каждого блока 8х8.
- Масштабировать компоненты цветов, если проводилась субдискретизация (эта информация есть в заголовке).
- Преобразовать полученные значения YCbCr для каждого пикселя в RGB.
- Вывести изображение на экран!
Серьёзная работа для простого просмотра фотки с котиком! Однако, что мне в этом нравится – видно, насколько технология JPEG человекоцентрична. Она основана на особенностях нашего восприятия, позволяющих достичь гораздо лучшего сжатия, чем обычные технологии. И теперь, понимая, как работает JPEG, можно представить, как эти технологии можно перенести в другие области. К примеру, дельта-кодирование в видео может дать серьёзное уменьшение размера файла, поскольку там часто есть целые области, не меняющиеся от кадра к кадру (к примеру, фон).
Код, использованный в статье, открыт, и содержит инструкции по замене картинок на свои собственные.
Форматы изображений: JPEG и TIFF
Понимание того, какой формат изображения использовать, даст вам возможность выжать максимум из своих цифровых фотографий. Некоторые форматы наилучшим образом подходят для получения оптимального баланса качества и размера файла при хранении ваших фотографии, тогда как другие типы позволят вам проще восстановить испорченный снимок. Существует бесчисленное множество форматов изображений, и время от времени к тому же появляются новые; в этой главе мы сосредоточимся на возможностях двух из трёх наиболее подходящих для цифровой фотографии форматов: JPEG и TIFF. Формат RAW рассмотрен в отдельной главе.
Введение: компрессия изображений
Важной концепцией, которая отличает многие форматы изображений, является наличие или отсутствие в них компрессии. Сжатые файлы значительно меньше своих несжатых собратьев и подразделяются на две основные категории: «с потерями» и «без потерь». Сжатие без потерь обеспечивает сохранность всей информации об изображении, даже если итоговый размер изображения получается несколько больше. Сжатие с потерями, на контрасте, может создать файлы значительно меньшего размера, но достигает этого, выборочно выбрасывая сведения об изображении. Итоговый сжатый файл в результате более не идентичен оригиналу. Видимые различия между сжатыми файлами и их исходниками называются «дефектами сжатия».
Формат JPEG
JPEG расшифровывается как «Объединённая группа фото-экспертов» (Joint Photographic Expert Group), и он, как предполагает название, был специально разработан для хранения фотографических изображений. Он стал также стандартным форматом для хранения изображений в цифровых камерах и показа фотографий на интернет-сайтах. Файлы JPEG существенно меньше сохраняемых в TIFF, однако ценой такой экономии является использование сжатия с потерями. Великая сила файлов JPEG состоит в их гибкости. Формат JPEG по сути является набором параметров, которые могут быть настроены под нужды отдельно взятого изображения.
Формат JPEG достигает малого размера файла, сжимая изображение с помощью метода, который сохраняет наиболее значимые детали и теряет детали, оценённые как менее влияющие визуально. JPEG осуществляет это, пользуясь тем фактом, что человеческий глаз замечает вариации яркости больше, чем вариации цвета. Степень достигаемой компрессии тем самым весьма зависит от содержания изображения; высокошумные или мелкодетальные изображения непросто сжать, тогда как картинки с мягким небом и небольшой текстурой будут сжаты очень хорошо.
Мелкодетальное изображение (сжатие JPEG малоэффективно) | Изображение без мелких деталей (сжатие JPEG эффективно) |
Полезно также получить визуальное представление о том, как различные степени сжатия влияют на качество вашего изображения. На 100% вы вряд ли заметите какие бы то ни было отличия между сжатым и несжатым изображением ниже, если они вообще есть. Обратите внимание, как алгоритм JPEG приоритизирует яркие высококонтрастные границы за счёт более тонких текстур. По мере снижения качества, алгоритм JPEG вынужден приносить в жертву всё более и более заметные текстуры, чтобы продолжать снижать размер файла.
Выберите качество сжатия: | 100% | 80% | 60% | 30% | 10% | ||
Оригинал | Сжатие |
Формат TIFF
TIFF расшифровывается как «формат файла размеченного изображения» (Tagged Image File Format) и является стандартом для типографской и печатной индустрии. Файлы TIFF значительно больше, чем их JPEG-аналоги, и могут быть записаны либо без сжатия, либо со сжатием без потерь. В отличие от JPEG, файлы TIFF могут иметь разрядность либо 16, либо 8 бит на канал. Кроме того, в одном файле TIFF может храниться несколько слоёв (страниц) изображения.
Файлы TIFF являются прекрасным выбором для хранения промежуточных файлов,которые может понадобиться редактировать впоследствии, поскольку они не вносят дефектов сжатия. Многие камеры могут записывать изображения сразу в TIFF, но они могут занять существенно больше места, чем аналогичный JPEG. Если ваша камера поддерживает формат RAW, это превосходная альтернатива,поскольку он существенно меньше и может при этом сохранить даже больше информации об исходном изображении.
Полезные советы
- Записывайте изображение, используя сжатие с потерями, только после окончания редактирования, поскольку многие манипуляции с изображением могут умножить дефекты сжатия.
- Избегайте сжимать файл несколько раз, поскольку дефекты сжатия могут накапливаться и приводить к нарастающему снижению качества изображения. В таких случаях алгоритм JPEG может в результате создавать файлы всё большего и большего размера при неизменной степени сжатия.
- Убедитесь, что шум в изображении минимален, поскольку это существенно уменьшит размер файлов JPEG.
Что такое формат JPEG – подробное описание для фотографов
Любой, кто когда-либо пользовался Интернетом, вероятно, видел изображения в формате JPEG. На сегодняшний день это самый распространенный способ кодирования, отправки по сети и хранения изображений. Формат JPEG используется миллиарды раз в день. Без JPEG Всемирная паутина была бы немного менее красочной, намного медленнее и, вероятно, не обладала бы таким богатством изображений кошек!
Сегодня вы можете отправить изображение в формате JPEG другу по электронной почте, не беспокоясь о том, какое устройство, браузер или операционную систему он использует. Но так было не всегда. В начале 1980-х компьютеры уже могли хранить и отображать цифровые изображения, но существовало много конкурирующих идей и подходов для этой реализации. Вы не могли просто отправить картинку с одного компьютера на другой и ожидать, что это будет нормально работать.
Для решения этой проблемы в 1986 году совместными усилиями ISO (Международная организация по стандартизации) и IEC (Международная электротехническая комиссия) была создана Объединенная группа экспертов по фотографии (Joint Photographic Experts Group – аббревиатура JPEG) со штаб-квартирой в Женеве (Швейцария).
JPEG, группа экспертов, создала JPEG, стандарт сжатия цифровых изображений, в 1992 году.
Технические детали формата JPEG
Вся информация на компьютере хранится в виде серии двоичных чисел. Как правило, эти биты, нули и единицы, объединяются в группы по восемь, известные как байты. Когда вы открываете изображение JPEG на своем компьютере, что-то (браузер, ваша операционная система или что-то еще) должно декодировать байты, чтобы восстановить исходное изображение в виде списка цветов, которые затем можно отобразить.
Если вы откроете любое изображение с помощью текстового редактора (например, Notepad++), вы увидите кучу искаженных символов. Открыв изображение в текстовом редакторе, вы запутали компьютер, точно так же, как запутали свой мозг, когда слишком сильно терли глаза и начинаете видеть тусклые пятна и цвета!
Эти тусклые пятна, которые вы видите – известны как фосфены – не происходят от каких-либо световых стимулов, и при этом они не являются галлюцинациями, созданными в вашем уме. Они возникают потому, что ваш мозг предполагает, что любой электрический сигнал, поступающий через нервы в ваш глаз, передает световую информацию. Мозг должен сделать это предположение, потому что нет никакого способа узнать, является ли данный сигнал звуком, образом или чем-то еще. Все нервы в вашем теле несут электрический импульс одинакового типа. Когда вы оказываете давление, потирая глаза, вы посылаете невизуальные сигналы, что запускают рецепторы в вашем глазу, которые ваш мозг интерпретирует – в данном случае неправильно – как образ. И вы буквально видите давление на глаза!
Компьютеры во многом похожи на наш мозг, — здесь важна правильная интерпретация сигналов. Все двоичные данные состоят из единиц и нулей, базовых компонентов, которые могут передавать любую информацию. Ваш компьютер часто догадывается, как ее интерпретировать, используя подсказки (например, расширение файла). Здесь мы заставили его интерпретировать картинку как текст, потому что именно этого ожидает текстовый редактор.
Если же вы откроете картинку в HEX-редакторе, то вы увидите просто большой набор цифр. В таких редакторах байты представлены в виде десятичных чисел. Вы можете вносить изменения в байты, и редактор будет изменять изображение.
А для просмотра изображений, закодированных в формате JPEG, сначала их надо декодировать. Этот процесс выполняется специальной программой поэтапно, но в обратном кодированию порядке.
Общая информация о формате JPEG
Файлы изображений в формате JPEG имеют следующие расширения: JPG, JFIF, JPE и JPEG. На сегодняшний день самым распространенным вариантом является расширение JPG.
Хранение графической информации в файловом формате JPEG использует алгоритм метода сжатия с потерями. Это позволяет сжимать данные с достаточно высокой эффективностью. В формате JPEG можно сохранять картинки с глубиной цвета до 24 бит/пиксель и размером их сторон не более 65535 пикселей (2311,93 см).
В JPEG не сохраняется альфа-канал (прозрачность).
Преимущества формата JPEG
Формат JPEG приобрел популярность из-за своего алгоритма сжатия, который позволяет значительно сжимать информацию и при этом сохранять основные цвета и яркость. Файлы в этом формате могут иметь небольшой размер, но при этом сохранять приемлемое качество изображений.
Этот формат используется во всех цифровых фотокамерах.
Изображения в формате JPEG можно без проблем просмотреть на любом электронном устройстве: компьютер, телевизор, смартфон, игровая приставка и так далее. Этот формат поддерживается во всех основных операционных системах: Mac OS, Linux, Windows, Android, iOS.
Недостатки формата JPEG
Главным недостатком формата JPEG можно считать то, что картинки в этом формате можно эффективно обрабатывать только один раз. После каждого сохранения изображения теряют качество и чем выше уровень сжатия, тем хуже будет их качество.
Другим недостатком формата JPEG является то, что он не сохраняет слои и альфа каналы (прозрачность).
Ограничения формата, которые напрямую зависят от уровня сжатия информации:
- Искажение цвета
- Мозаичность
- Ореолы вокруг контуров
- Появление шумов
- Потеря детализации
- Ступенчатость линий
- Ухудшение резкости
Детальнее о процессе сжатия файлов в формате JPEG
Чтобы дать вам представление о масштабе сжатия, которое используется в этом формате, представьте себе изображение весом примерно в 100 килобайт. Если бы информация об изображении хранилась без сжатия, для каждого пикселя потребовалось бы три числа – по одному для каждого из красного, зеленого и синего компонентов. Это будет означать в общей сложности 1 140 000 чисел, или около 1,2 мегабайт. Благодаря сжатию JPEG выходной файл становится в более чем десять раз меньше!
Процесс сжатия картинки в формате JPEG производится не сразу, а поэтапно.
Три уровня сжатия, которые используются в JPEG
- Подвыборка насыщенности цвета, Цветовая субдискретизация (Chrominance Subsampling)
- Дискретное косинусное преобразование и квантование (Discrete Cosine Transform and Quantization)
- Длина цикла, дельта и кодирование Хаффмана (Run-Length, Delta & Huffman Encoding)
Этап сжатия №1: Подвыборка насыщенности цвета, Цветовая субдискретизация
В первую очередь цифровое изображение переводится из цветового пространства RGB
в YCbCr
. В нем компонента Y
отвечает за яркость изображения, Cb
– это относительная синева (relative blueness), Cr
– это относительное покраснение (relative redness). Последние 2 компонента кодируются полностью, и в них уменьшается информация о цвете.
Этот этап в некоторой мере похож на то, как работают человеческие глаза. Цветовые рецепторы в наших глазах, известные как «колбочки», делятся на три типа, каждый из которых наиболее чувствителен к красному, зеленому или синему. Палочки, другой тип рецептора, которым наши глаза видят, могут обнаруживать только изменения яркости, но они гораздо более чувствительны. В наших глазах около ста двадцати миллионов палочек по сравнению с жалкими шестью миллионами колбочек.
Это означает, что наши глаза гораздо лучше обнаруживают изменения яркости, чем они обнаруживают изменения цвета. Если мы можем отделить цвет от яркости, мы можем удалить немного цвета, чтобы никто не заметил. Подвыборка насыщенности цвета – это процесс представления цветовых компонентов изображения с более низким разрешением, чем у его компонентов яркости.
Каждый пиксель имеет ровно один компонент Y
, тогда как каждая дискретная группа из четырех пикселей имеет ровно один компонент Cb
и один компонент Cr
. Таким образом, изображение содержит только четверть информации о первоначальном цвете.
Использование цветового пространства YCbCr
не является уникальным для JPEG. На самом деле, он был разработан в 1938 году для телевизионных передач. Не у всех были цветные телевизоры, поэтому отделение цвета от яркости позволило всем получать одинаковую передачу, а телевизоры, которые не поддерживали цвет, просто использовали компонент яркости.
Этап сжатия №2: Дискретное косинусное преобразование и квантование
На этом этапе все изображение разбивается на отдельные квадраты размером 8×8 пикселей и над каждым из них производится преобразование. При этом каждый квадрат раскладывается на составные цвета для подсчета частоты появления их по всему изображению.
Этот уровень сжатия в значительной степени является определяющей особенностью JPEG. После преобразования цветов в YCbCr компоненты сжимаются по отдельности. Дискретное косинусное преобразование (Discrete Cosine Transform – DCT) – это процесс разбиения изображения на блоки 8×8 и преобразования каждого блока в комбинацию из 64 паттернов.
Звучит невероятным то, что любое изображение может быть представлено с использованием 64 особых шаблонов (паттернов). Но это то же самое, что сказать, что любое место на Земле можно представить с использованием только двух чисел: долготы и широты. Поверхность Земли можно представить как двумерную, поэтому здесь нужны только два числа. Изображение 8х8 имеет шестьдесят четыре измерения, поэтому нам нужно шестьдесят четыре числа.
С точки зрения сжатия, не очевидно, как это помогает нам. Если нам нужно шестьдесят четыре числа для представления изображения 8×8, почему это лучше, чем хранить шестьдесят четыре компонента яркости? Мы делаем это по той же причине, по которой мы преобразовали три числа RGB
в три числа YCbCr
: это позволяет нам удалять детали, которые менее заметны.
Трудно понять, как именно выглядят детали, которые удаляются на этом этапе сжатия, потому что JPEG применяет дискретное косинусное преобразование только к блокам по 8×8 пикселей за один раз. Однако нет причин, по которым мы не можем применить его ко всему изображению.
На этом этапе сжатия JPEG удаляет высокочастотные детали. Преобразование цветов в коэффициенты (паттерны) DCT не является операцией с потерями. Это шаг квантования осуществляется с потерями, при котором значения высокой частоты, значения близкие к нулю или оба, удаляются. Когда вы выбираете более низкую настройку качества для изображения JPEG, это увеличивает порог для того, сколько из этих значений будет удалено, что приводит к меньшему размеру файла, но к более «зернистому» изображению.
Объем удаляемой из файла JPEG информации во время такой обработки сильно зависит от указанного уровня сжатия, и чем он больше, тем хуже будет качество изображения. Такое изображение уже никогда нельзя будет вернуть к первоначальному виду. Именно поэтому JPEG называется форматом сжатия с потерями качества. Размер файла после сжатия по сравнению с исходным файлом напрямую зависит от детализации изображения и чем больше мелких деталей, тем больше размер файла. Лучше сжимаются те изображения, в которых меньше шума и больше плавных цветовых и яркостных переходов. Чем выше контраст, тем хуже сжимается картинка.
Этап сжатия №3: Длина цикла, дельта и кодирование Хаффмана
На этом этапе сжатия кодируются цвета и яркость изображения. При этом сохраняются только отличия 64-х пиксельных квадратов, а вся одинаковая информация удаляется. Затем результаты такого кодирования представляются числами, которые тоже сжимаются по специальному алгоритму.
Все этапы сжатия до сих пор были с потерями. Этот последний слой сжатия, напротив, без потерь. Он не удаляет какую-либо информацию, но значительно уменьшает размер файла.
Как происходит сжатие, если не отсекается какая-то информация?
Подумайте о простом сплошном черном изображении. JPEG использует около 5000 чисел, чтобы представить его, но мы можем сделать намного лучше. Как можно сделать это с наименьшим количеством байтов? Наименьшее, что можно придумать, это четыре байта: три для указания цвета и один для определения количества пикселей, имеющих этот цвет. Идея выразить все повторяющиеся значения кратко таким способом называется кодированием по длине прогона. Это будет без потерь, потому что мы можем восстановить закодированные данные точно в том виде, как это было раньше.
Размер файла сплошного черного изображения JPEG намного больше, чем четыре байта, потому что помните, что в слое DCT сжатие применяется к блокам 8×8 одновременно. Поэтому, как минимум, нам понадобится один коэффициент DCT для каждого блока в 64 пикселя. Нам нужен только один, потому что вместо сохранения одного коэффициента DCT, за которым следуют 63 нуля для этого изображения, кодирование по длине прогона позволяет нам просто сохранить одно число и сказать «остальные равны нулю».
Дельта-кодирование – это метод хранения каждого байта в качестве относительного значения по сравнению с чем-то перед ним, вместо сохранения его абсолютного значения.
Для этого этапа характерно то, что здесь происходит запись заголовков в JPEG. Заголовки – это первые около 500 байтов, которые содержат метаданные об изображении, такие как его ширина и высота. Без заголовка практически невозможно (или, по крайней мере, очень трудно) декодировать изображение JPEG. Каждое изображение JPEG сжимается с кодом, который специфичен для этого конкретного изображения. Эти коды определены в словаре, хранящемся в заголовке. Этот метод называется кодированием Хаффмана, а словарь (алфавит) называется таблицей Хаффмана. Каждый компонент цвета может иметь свою собственную таблицу Хаффмана.
Таблицы Хаффмана оказывают такое сильное влияние на изображение, потому что они говорят нам, как читать отдельные биты. До сих пор мы имели дело с двоичными числами в десятичном виде. Это скрывает тот факт, что если вы хотите сохранить число 1
в байте, оно будет выглядеть как 00000001
, потому что каждый байт должен иметь ровно восемь битов, даже если ему нужен только один бит.
Это потенциально огромная трата хранилища, если у вас много небольших номеров. Кодирование Хаффмана – это метод, который позволяет нам ослабить это требование о том, что каждое число должно занимать восемь битов.
Как декодировать JPEG изображения?
Зная этапы процесса сжатия (кодирования) картинки, описанные выше, мы сможем представить себе процесс чтения (декодирования) изображения в формате JPEG. Для этого нам нужно:
- Извлечь таблицу(ы) Хаффмана из заголовка и декодировать биты.
- Извлечь коэффициенты дискретного косинусного преобразования для каждого компонента цвета/яркости, для каждого блока 8×8, без кодировки длин серий и дельты.
- Объединить волны косинуса, основанные на коэффициентах, чтобы получить значения пикселей для каждого блока 8×8 (это называется обратным дискретным косинусным преобразованием).
- Увеличить компоненты цветности, если они были подвергнуты выборке (эта информация содержится в заголовке).
- Преобразовать полученные значения YCbCr каждого пикселя в RGB.
- Отобразить картинку в JPEG на экран!
Это довольно большая работа, которая делается программой только для того, чтобы вы могли увидеть простую картинку с изображением котика!
Как правильно сохранять фотографии в формате JPEG
Учитывая все достоинства и недостатки файлового формата JPEG, которые мы рассмотрели выше, вы сможете эффективно сохранять изображения в этом формате. Это позволит вам сэкономить дисковое пространство на компьютере и при этом сберечь высокое качество изображений.
Многие фотографы делают основную ошибку: фотографии других, более «тяжелых» графических форматов, для экономии места переводят в формат JPEG, обрабатывают несколько раз и при этом еще сильно сжимают. Все это можно делать только с копиями фотографий. Не забывайте, что формат JPEG предназначен в основном для эффективного просмотра изображений, а не для последующих обработок и доработок.
Если вы делаете фотографии в формате JPEG, а затем хотите их качественно обработать, тогда сначала их следует перевести в формат PSD
или TIFF
. Эти форматы будут иметь большой размер, но зато у них не будет тех недостатков, которые присущи файлам JPEG. Только после окончательного завершения обработки фотографии вы можете сохранить ее в формате JPEG.
Для улучшения качества фотографий в формате JPEG, при сохранении всегда устанавливайте цветовой профиль sRGB
. Этот профиль поддерживается всеми графическими программами, всеми техническими устройствами и на всех платформах. В результате ваши фотографии будут выглядеть везде одинаково.
На сегодня все. Надеемся, что данная статья была вам полезна и интересна. Если у вас есть какие-то вопросы или замечания по данной теме, не стесняйтесь их озвучивать в разделе комментирования ниже.
Спасибо, что читаете нас!
Теги: Web, фото
- 2445
- Опубликовано
- Технологии
- прокомментируйте статью
- расскажите друзьям
Форматы файлов изображения: RAW, JPEG и другие
Форматы файлов изображения: RAW, JPEG и другие — Canon KazakhstanХАРАКТЕРИСТИКИ КАМЕРЫ
Узнайте об особенностях различных форматов — RAW, C-RAW, HEIF и JPEG — и типах сжатия изображения.
На большинстве цифровых камер предусмотрена возможность выбора формата (его также называют типом файлов), в котором будут сохраняться фотографии, — RAW, JPEG, а теперь еще и HEIF (впервые представленный с камерой EOS-1D X Mark III в 2020 г.) Так чем же различаются эти форматы, и какой следует предпочесть?
Файлы RAW
Файл в формате RAW соответствует своему названию — это файл «сырых», необработанных данных. Он содержит именно те данные изображения, которые захватил датчик камеры. Все настройки баланса белого, стиля изображения и так далее, которые вы применили, присоединяются к файлу изображения. Это означает, что в дальнейшем их можно будет изменить с помощью программного обеспечения для обработки файлов RAW, например Digital Photo Professional (DPP) от Canon или Adobe® Photoshop® (с актуальной версией подключаемого модуля Adobe Camera Raw) и не только.
Файл в формате RAW часто называют «цифровым негативом», так как данные можно обрабатывать и печатать различными способами, добиваясь различных результатов, совсем как негативы на пленочных камерах. Так же, как и пленочный негатив, файл RAW невозможно изменить. Если открыть файл RAW в приложении, обработать и отредактировать его и затем сохранить, на компьютере будет создан новый файл (обычно в формате JPEG или TIFF). Исходный файл в формате RAW останется без изменений, и в любой момент его можно будет снова открыть и использовать для получения совершенно другого результата.
Название формата «RAW» не является аббревиатурой, его написание заглавными буквами сложилось исторически, при этом имена файлов RAW на камерах Canon не заканчиваются на «.RAW». Вместо этого, вплоть до появления камеры EOS M50 с новым процессором DIGIC 8, файлы RAW на камерах Canon сохранялись в формате .CR2. На некоторых камерах также предусматривались альтернативные форматы с более низким разрешением и «средним» (M-RAW) или «малым» (S-RAW) размерами файлов. Файлы этих двух типов обладают большинством преимуществ файлов RAW, но благодаря меньшему разрешению занимают меньше места в хранилище.
Процессор DIGIC 8 позволил использовать формат . CR3 и его подвид, формат C-RAW, который сохраняет то же самое разрешение, при этом сокращая размер файлов на 35–55% и экономя пространство на карте памяти. (Для этого, однако, C-RAW использует сжатие с потерями, то есть удаляет некоторую информацию об изображении. Вскоре мы остановимся на этом аспекте подробнее).
Файлы RAW, созданные камерами разных моделей, не совсем одинаковы, даже если сохраняются в одном и том же формате (CR2 или CR3). Именно поэтому программное обеспечение для обработки файлов RAW, например DPP, регулярно обновляется для поддержки новых моделей камер, и при покупке новой камеры мы настоятельно рекомендуем проверить наличие обновлений DPP и загрузить самую актуальную версию.
Некоторые камеры EOS позволяют обрабатывать изображения в формате RAW, используя саму камеру, что очень удобно для создания файлов JPEG с одинаковыми пользовательскими настройками (например, балансом белого, яркостью и шумоподавлением), а не встроенных параметров JPEG вашей камеры. У обработки файлов RAW на компьютере, а не с помощью камеры, есть свои преимущества — более широкий экран и более мощный процессор.
Преимущества формата RAW
- Максимальная гибкость при редактировании
- Широкий выбор настроек для редактирования после съемки
- 14-битные файлы: запись максимального диапазона цветов и тонов
Недостатки формата RAW
- Большой размер файла
- Необходимость в обработке (обычно на компьютере)
Привлекательный пейзажный снимок, который сохранен в формате JPEG, то есть был обработан системой камеры с удалением большей части данных о цвете и тонах, которые были изначально захвачены.
Тот же снимок, сохраненный как файл HEIF, содержит больше нюансов цвета и тонов — если говорить точнее, в четыре раза больше. Разница между этими двумя изображениями обусловлена не экспозицией и не настройками контрастности: в версии HEIF просто-напросто больше информации и, соответственно, деталей изображения, в особенности в таких областях, как небо и облака.
Файлы JPEG
JPEG означает Joint Photographic Experts Group (Объединенная группа экспертов в области фотографии), и именно эта организация внедрила стандарт JPEG. Все файлы JPEG обладают одинаковым универсальным форматом, вне зависимости от размера и качества.
Если камера настроена на сохранение снимков в формате JPEG, то информация о снятом изображении обрабатывается камерой, после чего сохраняется сжатый файл. Можно сохранить изображения различных размеров (большого, среднего или малого) с различным качеством (уровни сжатия) и получить файлы разного размера: при выборе большого размера изображения и высокого качества будут сохраняться файлы JPEG максимального качества, а при выборе малого размера изображения и нормального качества — файлы минимального размера, то есть на карту памяти можно будет сохранить больше снимков. Однако даже при выборе максимального качества файла JPEG камера по факту удаляет большую часть изначально полученных данных.
При обработке изображения камера также применяет внутренние параметры, стиль изображения и другие настройки. После сохранения файла в формате JPEG эти настройки нельзя будет изменить — их применение необратимо. Разумеется, файл JPEG можно открыть в программном обеспечении для редактирования и скорректировать цвета, экспозицию и так далее, но файлы JPEG 8-битные, то есть содержат меньше информации, чем 10-, 12- или 14-битные файлы, которые можно сохранить на цифровых камерах EOS, и, соответственно, не предполагают такой свободы редактирования. Вскоре мы остановимся на этом подробнее.
Если вы не планируете кардинальных изменений снимков и печатаете их в формате до A4, это может быть несущественным, однако при внесении серьезных изменений и печати в больших форматах это может представлять проблему. Также при каждом редактировании и сохранении файла JPEG выполняется его повторное сжатие, то есть каждый раз происходит потеря данных.
Преимущества формата JPEG
- Меньший размер файлов: на карту памяти можно сохранить больше изображений
- Универсальный формат: для чтения не требуется специальное программное обеспечение
- Простота просмотра, обмена и печати изображений
Недостатки формата JPEG
- 8-битный: пониженные глубина цвета и разрешение
- Меньшая гибкость при постобработке
- Выбор пониженного качества может приводить к ухудшению качества изображения, возникновению артефактов и т. д.
Еще один пример различий между изображениями в форматах JPEG и HEIF. Если вы загрузили этот файл JPEG непосредственно с камеры, то вас вполне устроит то, как переданы яркие цвета.
Если сравнивать эти форматы, то HEIF содержит ощутимо больше нюансов цвета, передавая гораздо более тонкие переходы в областях градиентов, в то время как JPEG содержит относительно «плоские» цвета.
Файлы HEIF
HEIF означает High Efficiency Image File Format (высокоэффективный формат файла изображения). Этот формат впервые был представлен на камере EOS-1D X Mark III в 2020 г., а также поддерживается камерами EOS R5 и EOS R6, выпущенными в том же году. Этот формат позволяет сохранять данные различных типов мультимедиа-материалов, включая изображения. Как и в случае с JPEG, применяемые настройки камеры, например баланс белого и стиль изображения, необратимо интегрированы, но файлы Canon HEIF 10-битные, то есть содержат в четыре раза больше информации о цветах и тонах, чем 8-битные JPEG. Помимо большей свободы при редактировании, за счет высокого разрешения это также дает возможность просматривать изображения HEIF на HDR-мониторах, например на контрольном дисплее 4K. (Вскоре мы подробнее расскажем о глубине цвета).
Хотя файлы HEIF содержат в четыре раза больше цветовых данных, обычно их размер такой же, как и у фалов JPEG, так как сжатие в HEIF на 50% более эффективно, чем в JPEG (вот почему в их названии сказано «высокоэффективные»). Также используются более современные алгоритмы сжатия, чем в JPEG, что предотвращает возникновение артефактов и цветных полос, типичных для JPEG с высокой степенью сжатия.
Преимущества формата HEIF
- 10-битные: больше информации о цвете и тоне, чем в JPEG
- Больше гибкости при постобработке и редактировании
- Меньший размер файлов, несмотря на больший объем информации, чем в JPEG, и более эффективное сохранение качества изображения
Недостатки формата HEIF
- Нет заметной разницы с JPEG высокого качества на большинстве мониторов
- Поддержка пока еще не на всех принтерах — например, не во всех фотокиосках
При съемке восхода вы можете получить подобное изображение с камеры.
Если сохранить его в формате JPEG, а затем осветлить в программном обеспечении для редактирования изображения, то можно добиться лучшей детализации, но с риском получить полосы цвета на небе, где изображение не содержит достаточных тоновых нюансов для плавного перехода цветов.
На этих увеличенных участках изображений с деталями показана интенсивность полос цвета в 8-, 10- и 12-битных версиях одного и того же участка осветленного изображения.
Графическое представление влияния глубины цвета. 8-битный файл (например JPEG) может хранить гораздо меньше информации о цвете, чем 10-битный (например HEIF), а 14-битный файл (например RAW) хранит больше. Это означает, что, хотя резкие границы между цветами спектра в файлах JPEG не всегда заметны, градиенты цветов и тонов в файлах с большей глубиной цвета намного более плавные.
Глубина цвета
Глубина цвета — это количество битов (единиц и нулей), выделенных для хранения данных в цифровом файле. Таким образом, 8-битный файл может содержать до 256 (28) уровней информации для каждого канала цветности (красного, зеленого и синего). Соответственно, каждый пиксель 8-битного файла JPEG может содержать любой из 16,8 миллионов (256x256x256) цветов.
Файлы HEIF — 10-битные, то есть могут содержать до 1024 оттенков в каждом канале цветности, то есть любой цвет из возможного 1,07 миллиарда.
Файлы RAW — 14-битные, то есть могут содержать до 16 385 тонов в каждом канале, или до 4 триллионов цветов.
Очевидно, что чем выше глубина цвета, тем лучше, так как увеличивается количество возможных цветов, и в файл можно записать более тонкие нюансы тонов, более плавные переходы цвета и градиенты, хотя часто разницу трудно уловить, особенно при просмотре изображений на обычных мониторах. По-настоящему преимущества можно оценить при редактировании файлов с незаметными переходами цвета. Чем больше глубина цвета файлов, тем больше корректировок они могут выдержать без нежелательного изменения цвета или образования цветовых полос.
Слева: JPEG с высокой степенью сжатия (выбран параметр «низкое качество») или файл, который неоднократно сохранялся, будут содержать такие дефекты, как квадраты, полосы и артефакты (случайные цветные области на небе) и, как правило, выглядеть размытыми или мозаичными. Справа: JPEG более высокого качества не демонстрирует подобные дефекты, хотя переходы цвета на небе в этом примере уже не такие плавные.
Сжатие: нужно или нет?
При прочих равных условиях, чем больше глубина цвета файлов, тем больше их размер, и для хранения требуется больше места. В случае с файлами HEIF это правило не действует: обычно их размеры не больше, чем у файлов JPEG, хотя это 10-битные, а не 8-битные файлы, в отличие от JPEG. Это объясняется разными способами сжатия изображения.
Наиболее популярным способом сжатия является JPEG. Простыми словами, алгоритм сжатия ищет области изображения с пикселями похожего цвета и яркости. Он записывает полные данные для первого пикселя, а затем подставляет цифровой эквивалент для подходящих соседних пикселей. При этом расходуется меньше пространства в хранилище, чем при записи всех сведений для каждого пикселя. При открытии файла изображения для просмотра алгоритм использует данные первого пикселя для воссоздания дополнительных пикселей.
В формате JPEG предусматриваются различные степени сжатия. Максимальный уровень сжатия позволяет сократить размер файла в 100 раз по сравнению с исходным. Однако чем выше уровень сжатия, тем более активно алгоритм группирует вместе пиксели, не столь близкие по цвету и яркости. При повторном открытии файла воссозданные пиксели сильнее отличаются от оригинала по яркости и значению цвета. Это приводит к потере детализации и диапазона оттенков, образованию цветовых полос в областях, ранее содержавших плавные переходы цветов или оттенков, а также артефактов сжатия (пятен и распада на квадраты).
Важно понимать, что после сжатия файла этим способом некоторая часть данных изображения будет утрачена безвозвратно. Так же, как и в случае с разрешением, категорически не следует использовать уровень сжатия, при котором качество файла опустится ниже, чем качество необходимого вам итогового изображения.
Также потеря данных происходит при каждом сжатии измененного файла. Если внести изменения в файл формата JPEG, а затем повторно сохранить его как JPEG, произойдет дополнительная потеря данных.
Для файлов HEIF используется более современный и совершенный способ сжатия, чем для JPEG, что позволяет нивелировать ухудшение качества изображения.
Алгоритмы сжатия с потерями позволяют создавать файлы меньшего размера, удаляя часть информации об изображении при сохранении файла. Это означает, что при повторном просмотре изображения некоторые нюансы будут безвозвратно утрачены, то есть изображение будет менее детализированным, а его цвета — менее выразительными, и в областях с переходами тонов будут возникать полосы цвета.
Алгоритмы сжатия без потерь, напротив, сокращают размер файла без удаления информации об изображении. Это означает, что размеры файлов будут все же больше, чем при сжатии с потерями, однако никакие нюансы цвета и тонов не будут потеряны при дальнейшем просмотре изображения.
Сжатие без потерь и с потерями
Алгоритмы сжатия файлов, удаляющие часть данных исходного изображения, называют «сжатием с потерями». Однако существует также и сжатие без потерь. Такой способ сжатия использует математические алгоритмы для кодирования информации об изображении и более компактного сохранения всех данных. Это полностью обратимый процесс, то есть при открытии файла в нем присутствуют абсолютно все данные. Соответственно, ухудшение качества изображения не происходит.
Сжатие без потерь используется цифровыми камерами Canon, когда изображение с максимальным разрешением сохраняется в формате RAW (кроме случаев, когда выбран формат C-RAW).
Сжатие без потерь не обеспечивает сокращение размеров файла, в отличие от сжатия с потерями в форматах JPEG или HEIF, но размер сохраненных стандартных файлов формата Canon RAW может быть в четыре раза меньше размера файла до сжатия (фактический размер файла зависит от объекта и настроек ISO). Если выбран формат C-RAW, то сжатие происходит с некоторыми потерями для уменьшения размера файлов C-RAW по сравнению со стандартными файлами CR3.
Размеры файлов
Хотя использование максимального разрешения вкупе с минимальным коэффициентом сжатия позволяет получить изображения максимально высокого качества, размеры таких файлов также будут максимальными, и на их сохранение уйдет не только все место в хранилище, но и больше времени, так как сохранение данных на накопители происходит с определенной скоростью, зависящей от типа накопителя. Иногда более важно уместить в хранилище больше файлов или ускорить сохранение снимков камерой при непрерывной съемке. Именно поэтому на камерах Canon предусмотрено сразу несколько вариантов размера изображения и способов сжатия.
В таблице ниже показаны результаты применения различных настроек, поддерживаемых камерой EOS R5.
В руководстве пользователя EOS R5 указаны размеры файлов при выборе различных типов файла и настроек качества. Данные значения приводятся только в качестве примера и зависят от ряда факторов, включая емкость карты памяти, чувствительность ISO, стиль изображения и пользовательские функции.
Еще одно графическое представление различий между сжатием с потерями и без потерь. При сжатии с потерями (вверху) для экономии пространства выполняется необратимое удаление информации, то есть нюансы изображения теряются без возможности восстановления. При сжатии без потерь (внизу) для сокращения размера файла используются другие методы, что позволяет сохранить все нюансы при повторном просмотре изображения.
Что же выбрать?
Простого ответа на этот вопрос нет. Он зависит от нескольких факторов, и вариант, подходящий в одной ситуации, может оказаться неактуален в другой. Тем не менее, при выборе вы можете учитывать следующие аспекты.
Если необходимо получить изображение максимально высокого качества, снимайте с максимальным разрешением и низким уровнем сжатия JPEG/HEIF (лучшее качество, большие файлы), а лучше всего — в формате RAW. Однако это не только израсходует больше пространства на карте памяти, но и сократит количество снимков, которые можно сделать при серийной съемке до заполнения буфера обмена, а также увеличит время передачи изображений в дальнейшем. Это не всегда важно, но может стать проблемой, когда необходима быстрая серийная съемка спортивных мероприятий или оперативный обмен изображениями.
Также, если планируется существенная постобработка или печать в очень крупном масштабе (размер постера и больше), оптимальной будет съемка файлов максимально высокого качества в формате RAW с минимальным сжатием, так как это сохранит больше данных изображения для дальнейшей работы с ними.
С другой стороны, когда необходим быстрый доступ к изображениям, съемка с использованием сжатых файлов в формате JPEG позволяет считывать файлы непосредственно с карты памяти. Не следует думать, что JPEG означает низкое качество. Если выбрать любое качество, кроме самого низкого, то, по сути, камера просто будет выполнять обработку за вас, используя заранее заданное преобразование RAW с оптимизированными стандартными параметрами. Результаты отлично подойдут для просмотра на экране или печати в формате до A4.
Если необходим не только быстрый обмен файлами JPEG, но и возможность дальнейшего максимально свободного редактирования снимков, при этом скорость и место на карте памяти не играют значения, рекомендуем присмотреться к варианту RAW+JPEG, когда изображение одновременно сохраняется в обоих форматах.
Если камера поддерживает формат HEIF, рекомендуем его опробовать. Он обладает преимуществами двух других форматов и при этом поддерживается большинством приложений для редактирования.
Проще всего понять, какой именно формат подходит вам, вы можете, сняв один и тот же объект в разных форматах файлов, с различными комбинациями разрешения и сжатия и затем проанализировав изображения на экране. Также стоит напечатать изображения из файлов самого большого и самого малого размера и проанализировать разницу между ними, если она вообще будет заметна. Вы удивитесь, но иногда при использовании более низкого разрешения разница в результатах не столь очевидна.
* 1–5. Размер файла, возможное количество снимков и максимальная длина серии зависят от условий съемки (включая качество 1,6x кроп/соотношение сторон, объекта, производителя карты памяти, чувствительность ISO, стиль изображения, пользовательские функции и др.). Подробнее см. в руководстве по расширенным операциям EOS R5.
Автор Angela Nicholson
СТАТЬЯ
6 способов улучшить ваши фотографии в программе DPP
Digital Photo Professional, программа для обработки и редактирования изображений RAW от Canon, поддерживает более широкий набор функций, чем можно представить. Откройте для себя 6 причин использовать DPP.
Узнайте больше
ВОЗМОЖНОСТИ КАМЕРЫ
Нумерация и присвоение имен файлам
В нашей статье Информационного банка описываются варианты нумерации и наименования файлов, доступные на камерах Canon EOS и в совместимом программном обеспечении.
Узнайте больше
ВОЗМОЖНОСТИ КАМЕРЫ
Видоискатель и ЖК-экран
Видоискатель или ЖК-экран? Узнайте о различиях цифровых зеркальных и беззеркальных камер, а также новую информацию об оптическом и электронном видоискателе.
Узнайте больше
Подпишитесь на рассылку
Нажмите здесь, чтобы получать вдохновляющие истории и интересные новости от Canon Europe Pro
Мы используем файлы cookie, чтобы обеспечить вам наиболее полные возможности взаимодействия с Canon и наиболее удобную работу с нашим веб-сайтом. Узнайте больше об использовании файлов cookie и измените ваши настройки cookie w3.org/1999/xhtml»>здесь. Вы принимаете нашу политику использования файлов cookie на вашем устройстве, продолжая использовать наш веб-сайт или нажав Принимаю.
Удалите элемент или очистите [category], поскольку существует ограничение на 8 продуктов. Нажмите «Изменить»
Сбросить весь выбор?
Формат изображения JPEG и структура файлов
Теги: JPG JPEG Формат изображения Структура файла
Заказ хранения в микропроцессоре имеет положительную последовательность (маленький эндин) большого эндена. Положительное хранилище последовательности заключается в том, что группа высокого уровня хранится в переднем нижнем порядке, а хранение обратного последовательности заключается в том, что низкоуровневая группа находится за группой передней высокой положения. Например, шестнадцатеричное число составляет A02B, а хранилище предварительного последовательности представляет собой A02B, а обратная последовательность — 2BA0. Микропроцессор Motorola использует положительную последовательность, а микропроцессор Intel использует обратный порядок. Битовая группа в файле JPEG расположена в положительном порядке.
При разработке стандарта JPEG Комитет JPEG определяет много тегов для различения и идентификации данных изображения и ее связанную информацию, но никогда не было четко определено для форматов файлов JPEG. С декабря 1998 года его было видно из анализа онлайн-определенного изображения JPG, а использование относительно широкого диапазона номера номера версии файлов JPEG (JFIF) составляет 1,02. Это Эрик Гамильтон в C-Cube Microsystems в сентябре 1992 года. Есть также форматы TIFF JPEG, но поскольку этот формат более сложный, большинство приложений поддерживают форматы файлов JFIF.
Основными недостатками в формате JPEG также являются его крупнейшими преимуществами. То есть, существует алгоритм сжатия потерь для ограничения JPEG только к формату отображения, а некоторые данные будут потеряны каждый раз, когда формат JPEG сохраняется. Следовательно, он обычно сохраняется только в формате JPEG только на заключительном этапе создания.
В формате файла JFIF порядок хранения образцов изображения находится слева направо и сверху. Это означает, что первый образец изображения в файле JFIF является образец в левом верхнем углу изображения.
Структура файла
Формат файла JFIF напрямую использует стандарт JPEG для многих тегов, определенных приложением, поэтому формат JFIF на самом деле является стандартом формата обмена файлами JPEG. Каждый меток JPEG состоит из 2 битов, а предыдущая битовая группа является фиксированным значением 0xFF. Ряд безлимитных кортежей заливки 0xFF (BYTE BYTE) можно добавить перед каждым тегом. Вот 8 маркеров:
1. SOI 0xd8 начать изображение
2. APP0 0XE0 JFIF Блок данных приложения
3. appn 0xe1 — 0xef Другие блоки данных приложения (n, 1 ~ 15)
4. Таблица квантования DQT 0xDB
5. SOF0 0xc0 Frame Start
6. DHT 0xc4 Hoffman стол
7. Начните строку SOS 0xda Scan
8. EOI 0xd9 конец изображения
JPEG определен тег
Код метки символа Описание
SOF0 0xFFC0 Baseline DCT
SOF1 0xFFC1 Extended sequential DCT
SOF2 0xFFC2 Progressive DCT
SOF3 0xFFC3 Spatial (sequential) lossless
Start Of Frame markers, hierarchical Huffman coding
SOF5 0xFFC5 Differential sequential DCT
SOF6 0xFFC6 Differential progressive DCT
SOF7 0xFFC7 Differential spatial lossless
Start Of Frame markers, non-hierarchical arithmetic coding
JPG 0xFFC8 Reserved for JPEG extensions
SOF9 0xFFC9 Extended sequential DCT
SOF10 0xFFCA Progressive DCT
SOF11 0xFFCB Spatial (sequential) Lossless
Start Of Frame markers, hierarchical arithmetic coding
SOF13 0xFFCD Differential sequential DCT
SOF14 0xFFCE Differential progressive DCT
SOF15 0xFFCF Differential spatial Lossless
Huffman table specification
DHT 0xFFC4 Define Huffman table(s)
arithmetic coding conditioning specification
DAC 0xFFCC Define arithmetic conditioning table
Restart interval termination
RSTm 0xFFD0~0xFFD7 Restart with modulo 8 counter m
Other marker
SOI 0xFFD8 Start of image
EOI 0xFFD9 End of image
SOS 0xFFDA Start of scan
DQT 0xFFDB Define quantization table(s)
DNL 0xFFDC Define number of lines
DRI 0xFFDD Define restart interval
DHP 0xFFDE Define hierarchical progression
EXP 0xFFDF Expand reference image(s)
APPn 0xFFE0~0xFFEF Reserved for application use
JPGn 0xFFF0~0xFFFD Reserved for JPEG extension
COM 0xFFFE Comment
Reserved markers
TEM 0xFF01 For temporary use in arithmetic coding
RES 0xFF02~0xFFBF Reserved
Ссылка: https://www. cnblogs.com/yuuki-/p/7868868.html.
Интеллектуальная рекомендация
FFMPEG и VS2010
Скомпилируйте ffmpeg — это болезненная вещь, которая обычно используется напрямуюZeranoe FFmpeg Builds。 Если вы используете эту версию, вам нужно обратить внимание на абзац о помощи FFMPEG: То есть фа…
Встроенная идея + Maven + Sprilboot Project Project Prience Integration MVC
Используйте идею + Maven + Springboot Создание новых проектов (1) Интегрированный MVC 1. Создайте новый файл проекта -> Новый -> Проект maven —> next 2. Заполните идентификатор организации и…
Redis Обзор и общие инструкции
Redis использует два — инструкции Окружающая среда: Redis-5.0.3, Centos605 Обзор Redis — это высокоскоростная база данных памяти NoSQL, которая является системой хранения структуры данных в памяти, а …
Режим цепочки режима дизайна режима
основная концепция Что такое цепь Цепь представляет собой коллекцию узлов. Каждый узел цепи может быть разделен и реорганизован. Режим цепочки обязанностей Сделайте несколько объектов иметь возможност…
Проникновение в сеть/динамическое сетевые сети/видео Shangyun Gateway Easynts Network Platform Номер учетной записи и пароль нельзя войти в систему, как решить
Easynts, как Gateway Video Cloud, имеет такие функции, как сети видеопотоков, удаленная работа и техническое обслуживание. До запуска он будет протестирован отделом департамента исследований и разрабо…
Вам также может понравиться
Аплет WeChat сообщил об ошибке: не удалось прочитать свойство 0 из undefined
Сегодня я столкнулся с ошибкой: VM4735:2 Uncaught TypeError: Cannot read property ‘0’ of undefined После долгих поисков было обнаружено, что тринокулярный расчет был неправильным.Такую низкоуровневую …
beaurifulsoup считывает данные локальной веб-страницы и сохраняет их в csv
Градуированная бедная собака использовала paperYY для проверки дубликатов. Контент проверки дубликатов отображается в формате html. Чтобы облегчить изменение повторяющихся мест в документе, содержание…
【CCF】201609-1
…
Два элемента управления JS — список и пейджер
В последние месяцы я выполнял различные работы по техническому обслуживанию, и блог не обновляется часто. В мгновение ока наступит 2011 год, и я надеюсь, что в наступающем году я найду свою страсть. З…
Начало работы с сопоставлением точек функций python opencv + цель поиска по гомографии (39)
Контент поступает из само переведенных и организованных учебных пособий OpenCV-Python. цели: Мы объединим сопоставление характерных точек и поиск гомографии, а также будем использовать модуль calib3d …
Растровый формат JPG (JPEG) | SEO-портал
Автор: Нотан Ройамов
Создано:
Обновлено:
Оценка:
Комментарии: 0
JPEG (сокр. от названия разработчика Joint Photographic Experts Group) — популярный в интернете растровый графический формат файлов, применяющий технологию сжатия с потерями данных.
Содержание
Создание JPEG-изображений
Создать и сохранить изображение (фотографию, скриншот, рисунок) в формате JPG
можно с помощью любого графического редактора (в том числе Paint и Photoshop).
Как сохранить изображение в формате JPG в Paint?
Процесс сохранения в формат JPEG
с помощью редактора Paint в Windows 10:
- Откройте файл изображения в Paint.
Программа поддерживает изображения в форматах
BMP
,TIFF
,PNG
,GIF
,JPEG
. - Кликните по вкладке Файл.
Откроется контекстное меню.
- Выберите Сохранить как → Изображение в формате JPEG.
Откроется модальное окно выбора папки и названия для файла.
- Определите папку, введите название файла и нажмите Сохранить.
Редактор Paint не позволяет регулировать степень сжатия формата от названия разработчика <strong>Joint Photographic Experts Group</strong>) — популярный в интернете растровый графический формат файлов, применяющий технологию сжатия с потерями данных.<div class="seog-tooltip-more-link"><a href="/baza/kartinki/formaty-kartinok/jpg">Подробнее</a></div> »>JPEG, сжимая изображения в предустановленном режиме.
Как сохранить изображение в формате JPEG в Photoshop?
Процесс сохранения в формате JPG
с помощью редактора Adobe Photoshop CC 2015:
- Откройте файл изображения в Photoshop.
Программа поддерживает изображения в самых разных графических форматах.
- Кликните по вкладке Файл.
Откроется контекстное меню.
- Выберите Сохранить для Web (по умолчанию
Alt
+Ctrl
+Shift
+S
).Откроется модальное окно сохранения.
- В правом верхнем углу диалогового окна из выпадающего списка выберите JPEG.
Откроются дополнительные настройки формата
JPEG
. - Определите степень сжатия с помощью настройки Качество.
Используйте ползунок или введите цифру от 0 (худшее качество/максимальное сжатие) до 100 (лучшее качество/минимальное сжатие). Искажение изображения в зависимости от степени сжатия можно контролировать в левой части окна.
- Кликните Сохранить….
Откроется модальное окно выбора папки и названия для файла.
- Определите папку, введите название файла и нажмите Сохранить
Сжатие файлов в формате JPG
Гибкая оптимизация размера графического файла с помощью компрессии (сжатия) — главное преимущество формата JPG
, которое одновременно является его недостатком, т. к. при сжатии происходит снижение качества изображения из-за потери данных.
Степень сжатия (или качества изображения), как правило, регулируется при сохранении. Например, в программе Adobe Photoshop в режиме «Сохранить для Web» степень сжатия регулируется в числовом диапазоне от 0 до 100, при этом разницу в качестве изображения можно наблюдать непосредственно в окне режима сохранения:
Потеря качества изображения в формате JPEG в зависимости от степени сжатия при увеличении 200%В процессе JPEG-компрессии пиксельная сетка изображения делится на блоки 8×8 px, каждый пиксель в блоке принимает определённые значения цвета в зависимости от установленной степени сжатия. Именно поэтому при неопределённой степени сжатия искажения изображения могут быть слишком явными.
Преимущества JPEG
- Неограниченная цветовая палитра.
- Гибкая оптимизация размера файла.
- Возможность сжатия без потерь.
- Отлично подходит для большинства фотографий.
Недостатки JPEG
- Не поддерживает канал прозрачности (альфа-канал)
При необходимости прозрачного фона или эффектов полупрозрачности используйте формат PNG.
- Безвозвратная потеря данных при сжатии
Если потеря данных недопустима — используйте формат PNG.
- Необходимость контроля степени сжатия для сохранения детализации
Если требуется максимальная детализация без контроля степени сжатия — используйте формат PNG.
- Не поддерживает анимацию
Для создания анимированных изображений с 8-битной глубиной цвета применяется формат GIF.
Расширения JPG-файлов
Для файлов в данном графическом формате могут применяться следующие расширения (окончания): JPG
, JPEG
, JFIF
, JPE
.
Рекомендации по применению
При использовании и оптимизации изображений в формате JPEG
для вашего сайта руководствуйтесь следующими рекомендациями:
- используйте формат
JPEG
для фотографий и других изображений с плавными цветовыми переходами и изменениями яркости; - для сохранения качества детализации отдельных изображений степень сжатия нужно регулировать вручную;
- контролируйте изменение качества изображения в предварительном просмотре в зависимости от степени сжатия
JPEG
; - не сохраняйте изображения в формате
JPEG
многократно, если используется сжатие данных с потерями; - помните, что восстановить качество изображения в исходном виде после сохранения в сжатом формате
JPEG
невозможно; - не используйте формат
JPEG
для контрастных изображений с резкими переходами тональности и яркости (схем, чертежей, рисунков).
Часто задаваемые вопросы
Как открыть файл в формате JPEG (JPG)?
Открыть файлы в формате JPEG
можно с помощью любых программ для просмотра изображений (в том числе стандартные приложения Windows), всех интернет-обозревателей (браузеров), а также векторных (Illustrator, Corel Draw) и растровых (Paint, Photoshop, GIMP) графических редакторов.
Какой программой можно открыть файл JPG?
Список наиболее популярных графических редакторов, позволяющих открывать и редактировать картинки в формате JPG
(и во многих других графических форматах):
- Microsoft Paint,
- GIMP,
- Adobe Photoshop,
- Adobe Illustrator,
- CorelDRAW,
- Corel Photo Paint,
- и др.
Как открыть файл JPG в «фотошопе»?
Чтобы открыть любое изображение в формате JPG
(а также в любом другом графическом формате) в Photoshop откройте программу и воспользуйтесь функцией Файл → Открыть. .. (клавиши Ctrl
+ O
). Таким же способом это можно сделать в любом другом графическом редакторе.
Как создать и сохранить изображение в формате JPG?
Смотрите Создание изображений в формате JPEG.
Как изменить формат фотографии на JPEG?
Поменять формат фото (или другого изображения) на JPG
можно с помощью функции экспорта в графических редакторах или через онлайн-конвертеры.
Например, программа Microsoft Paint позволяет сохранять в формат JPG
с помощью функции экспорта «Сохранить как» следующие форматы: BMP
, TIFF
, PNG
, GIF
.
Как сохранить скриншот в формате JPG?
Сохранить скриншот в формате JPEG
можно с помощью любого графического редактора.
Сохранение скриншота в формате JPG в Paint
Рассмотрим процесс на примере простейшего редактора Paint:
- Откройте редактор Paint.
Меню Пуск → Стандартные — Windows → Paint или иным способом.
- Создайте новое изображение в редакторе.
Меню Файл → Создать.
- Сделайте скриншот.
С помощью клавиши
PrtSc
или иным способом. - Вставьте скриншот в созданное изображение из буфера обмена.
С помощью клавиш
Ctrl
+V
. - Сохраните изображение в формате JPEG.
Как сжать изображение в формате JPEG?
Степень сжатия устанавливается в графических редакторах перед сохранением файла. Лучше всего для этого подходит функция «Сохранить для Web» в программе Adobe Photoshop, т. к. она позволяет визуально контролировать потери качества изображения в зависимости от степени сжатия (см. ответ на вопрос «Как сохранить изображение в файл в формате JPEG?»).
Если вы желаете сжать изображение в формате JPEG
без контроля качества с вашей стороны (доверившись предустановленному алгоритму компрессора), то можете экспортировать изображения в JPG
чере Paint или через онлайн-компрессор tinyjpg. com.
Нельзя сжимать файлы в формате JPG повторно, т. к. каждое очередное сохранение безвозвратно ухудшает качество изображения.
Чем отличаются форматы JPEG и JPG?
Файлы с расширениями JPG
, JPEG
, а также JFIF
и JPE
относятся к формату JPEG
. Они ни чем не отличаются, кроме расширения (суффикса), которое в случае необходимости можно легко заменить (например, через Total Commander).
JPG и JPEG — один и тот же формат графических файлов для растровых изображений.
JPEG — формат файла изображения
Что такое файл JPEG?
JPEG — это тип формата изображения, который сохраняется с использованием метода сжатия с потерями. Выходное изображение в результате сжатия представляет собой компромисс между размером хранилища и качеством изображения. Пользователи могут настроить уровень сжатия для достижения желаемого уровня качества и в то же время уменьшить размер хранилища. Качество изображения незначительно ухудшается, если к изображению применяется сжатие 10:1. Чем выше значение сжатия, тем выше ухудшение качества изображения.
Спецификации формата файла
Формат файла изображения JPEG был стандартизирован Объединенной группой экспертов по фотографии, отсюда и название JPEG. Формат был выбран для хранения и передачи фотографических изображений в Интернете. Почти все операционные системы теперь имеют средства просмотра, поддерживающие визуализацию изображений JPEG, которые также часто хранятся с расширением JPG. Даже веб-браузеры поддерживают визуализацию изображений JPEG. Прежде чем перейти к спецификациям формата файла JPEG, необходимо упомянуть общий процесс, связанный с созданием JPEG.
Шаги сжатия JPEG
Преобразование: Цветные изображения преобразуются из RGB в изображение яркости/цветности (глаз чувствителен к яркости, а не к цветности, поэтому часть цветности может потерять много данных и, следовательно, может быть сильно сжата.
Понижающая выборка: Понижающая выборка выполняется для цветного компонента, а не для яркостной составляющей. Понижающая выборка выполняется с соотношением 2:1 по горизонтали и 1:1 по вертикали (2h 1 V). Таким образом, изображение уменьшается в размере, поскольку Компонент «у» не тронут, заметной потери качества изображения нет.
Организация в группы: Пиксели каждого цветового компонента организованы в группы 8×2 пикселей, называемые «единицами данных», если количество строк или столбцов не кратно 8, нижняя строка и крайний правый столбец дублируются.
Дискретное косинусное преобразование: Дискретное косинусное преобразование (DCT) затем применяется к каждой единице данных для создания карты 8×8 преобразованных компонентов. DCT приводит к некоторой потере информации из-за ограниченной точности компьютерной арифметики. Это означает, что даже без карты будет некоторая потеря качества изображения, но обычно она невелика.
Квантование: Каждый из 64 преобразованных компонентов в единице данных делится на отдельное число, называемое его «Коэффициентом квантования (КК)», а затем округляется до целого числа. Здесь информация теряется безвозвратно, большой контроль качества приводит к большим потерям. В целом, большинство реализаций JPEG позволяют использовать таблицы контроля качества, рекомендованные стандартом JPEG.
Кодирование: 64 квантованных преобразованных коэффициента (которые теперь являются целыми числами) каждого блока данных кодируются с использованием комбинации RLE и кодирования Хаффмана.
Добавление заголовка: Последний шаг добавляет заголовок и все используемые параметры JPEG и выводит результат.
Декодер JPEG использует шаги в обратном порядке для создания исходного изображения из сжатого.
Структура файла
Изображение JPEG представлено в виде последовательности сегментов, где каждый сегмент начинается с маркера. Каждый маркер начинается с байта 0xFF, за которым следует флаг маркера, представляющий тип маркера. Полезная нагрузка, за которой следует маркер, зависит от типа маркера. Общие типы маркеров JPEG перечислены ниже:
Short Name | Bytes | Payload | Name | Comments | |||
---|---|---|---|---|---|---|---|
SOI | 0xFF, 0xD8 | none | Start of Image | ||||
S0F0 | 0xFF, 0xC0 | переменный размер | Начало кадра | ||||
S0F2 | 0xFF, 0xC2 | переменный размер | Начало кадра | 0063 DHT0xFF, 0xC4 | variable size | Define Huffman Tables | |
DQT | 0xFF, 0xDB | variable size | Define Quantization Table(s) | ||||
DRI | 0xFF, 0xDD | 4 байта | Определите интервал перезапуска | ||||
SOS | 0XFF, 0xDA | . 0064 | 0xFF, 0xD//n//(//n//#0..7) | нет | Перезапуск | ||
APPn | 0xFF, 4xE 909 3 переменная размер//n// | 4 | 4 Application specific | ||||
COM | 0xFF, 0xFE | variable size | Comment | ||||
EOI | 0xFF, 0xD9 | none | End Of Image |
Within the entropy-coded данные, после любого байта 0xFF кодировщик вставляет байт 0x00 перед следующим байтом, чтобы не было маркера там, где он не предназначен, что предотвращает ошибки кадрирования. Декодеры должны пропустить этот байт 0x00. Этот метод, называемый заполнением байтов (см. раздел F.1.2.3 спецификации JPEG), применяется только к данным с энтропийным кодированием, а не к данным полезной нагрузки маркера. Обратите внимание, однако, что данные с энтропийным кодированием имеют несколько собственных маркеров; в частности, маркеры сброса (от 0xD0 до 0xD7), которые используются для изоляции независимых фрагментов данных с энтропийным кодированием, чтобы обеспечить параллельное декодирование, и кодировщики могут свободно вставлять эти маркеры сброса через равные промежутки времени (хотя не все кодеры делают это).
Сводка из Энциклопедии форматов графических файлов
Также известен как: JFIF, JFI, JPG, JPEG
Тип | Растровое изображение |
Цвета | До 24 бит |
Сжатие | JPEG |
Максимальный размер изображения | 64Kx64K пикселей |
Числовой формат | С обратным порядком байтов |
Несколько изображений в файле | № |
Инициатор | Микросистемы C-Cube |
Платформа | Все |
Вспомогательные приложения | Слишком много, чтобы перечислить |
См. также | Глава 9, Сжатие данных (раздел JPEG) |
Использование
Используется в основном в программах обработки графики и изображений.
Комментарии
Один из немногих форматов, в котором используется сжатие JPEG.
это обеспечивает превосходное сжатие изображений с глубокими пикселями.
Спецификации поставщика доступны для этого формата.
Фрагменты кода доступны для этого формата.
Примеры изображений доступны для этого формата.
JPEG (Объединенная группа экспертов по фотографии) относится к организация стандартов, метод сжатия файлов, а иногда и формат файла. Фактически спецификация JPEG сам по себе, который мы описываем в терминах сжатия в главе 9, сам по себе не определяет общий обмен файлами. формат для хранения и передачи данных JPEG между компьютерные платформы и операционные системы. JPEG Формат обмена файлами (JFIF) является развитием C-Cube Microsystems для хранения Данные в формате JPEG. JFIF это разработан, чтобы разрешить файлы, содержащие JPEG-кодированные потоки данных для обмена между другими несовместимыми системами и приложений.
Содержание:
Организация файлов
Сведения о файле
Для получения дополнительной информации
Файл JFIF в основном представляет собой JPEG поток данных с некоторыми ограничениями и маркером идентификации. В целях чтобы понять формат JFIF, вам нужно понимать JPEG; в дополнение к Глава 9, см. часто задаваемые вопросы по JPEG (Часто задаваемые вопросы), включенный в CD-ROM и доступны в Интернете.
Данные JPEG и JFIF являются байтовыми. потоки, всегда сохраняющие 16-битные значения слов в формате с обратным порядком байтов. Данные JPEG обычно хранятся в виде потока блоков, и каждый блок идентифицируется значением маркера.
Первые два байта каждого потока JPEG являются Значения маркера начала изображения (SOI) FFh D8h. В JFIF-совместимый файл есть Маркер JFIF APP0 (приложение), немедленно после SOI, который состоит из кодовых значений маркера FFh E0h и символы JFIF в данных маркера, как описано в следующем разделе. В добавок к Сегмент маркера JFIF, может быть один или несколько необязательные сегменты маркера расширения JFIF, за которыми следуют фактическими данными изображения.
Хотя файлы JFIF не имеют формально определенный заголовок, SOI и JFIF APP0 маркеры, взятые вместе, действуют как заголовок в следующем сегменте маркера. структура:
typedef структура _JFIFHeader { БАЙТ SOI[2]; /* 00h Начало маркера изображения */ БАЙТ APP0[2]; /* 02h Маркер использования приложения */ БАЙТ Длина[2]; /* 04h Длина поля APP0 */ БАЙТ-идентификатор[5]; /* 06h "JFIF" (заканчивается нулем) Строка идентификатора */ БАЙТ Версия[2]; /* 07h Версия формата JFIF */ БАЙТ Единицы; /* 09h Единицы, используемые для разрешения */ БАЙТ Xdensity[2]; /* Горизонтальное разрешение 0Ah */ БАЙТ Ydensity[2]; /* Разрешение по вертикали 0 каналов */ БАЙТ XЭскиз; /* 0Eh Количество пикселей по горизонтали */ БАЙТ YЭскиз; /* 0Fh Количество пикселей по вертикали */ } JFIFHEAD;
SOI является началом маркера изображения и всегда содержит код маркера. значения FFh D8h.
APP0 является маркером приложения и всегда содержит код маркера. значения FFh E0h.
Длина — это размер маркера JFIF (APP0). сегмент, включая размер самого поля «Длина» и любой миниатюрные данные, содержащиеся в сегменте APP0. Из-за этого значение длины равно 16 + 3 * XThumbnail * YThumbnail.
Идентификатор содержит значения 4Ah 46h 49h 46h 00h (JFIF) и используется для идентификации кодового потока как в соответствии со спецификацией JFIF.
Версия определяет версию JFIF. спецификация, где первый байт содержит основную версию номер и второй байт, содержащий дополнительный номер версии. За версия 1.02, значения поля Версия: 01h 02h; старые файлы содержать 01h 00h или 01h 01h.
Units, Xdensity и Ydensity определяют единицы измерения, используемые для опишите разрешение изображения. Единицы могут быть 01h для точек на дюйм, 02h для точек на сантиметр или 00h для отсутствия (используйте измерение как пиксель соотношение сторон). Xdensity и Ydensity — горизонтальная и вертикальная разрешение данных изображения соответственно. Если значение поля Единицы равно 00h, поля Xdensity и Ydensity будут содержать соотношение пикселей соотношение (Xdensity : Ydensity), а не разрешение изображения. Потому что неквадратные пиксели не рекомендуются из соображений портативности, Значения Xdensity и Ydensity обычно равны 1, когда значение Units 0.
XThumbnail и YThumbnail задают размеры уменьшенного изображения. включен в маркер JFIF APP0. Если нет миниатюры изображение включено в маркер, то эти поля содержат 0. A уменьшенное изображение представляет собой уменьшенное представление изображения, хранящегося в основной поток данных JPEG (некоторые люди называют его иконкой или превью изображения). Сами данные эскиза состоят из массива XThumbnail * Значения пикселей YThumbnail, где каждое значение пикселя занимает три байта и содержит 24-битное значение RGB (хранится в порядке R,G,B). Миниатюра не сжимается изображение.
Сохранение эскиза изображения в маркере JFIF APP0 сейчас не рекомендуется, хотя по-прежнему поддерживается для отсталых совместимость. Версия 1.02 JFIF определяет маркеры расширения, которые позволяют сохранять эскизы изображений отдельно от идентификационного маркера. Этот метод является более гибким, поскольку разрешены несколько форматов эскизов, и поскольку несколько миниатюрные изображения разных размеров могут быть включены в файл. Версия 1.02 позволяет отображать эскизы цветов (один байт на пиксель). плюс карта цветов с 256 элементами) и JPEG-сжатие миниатюры, в дополнение к 24-битной миниатюре RGB формат. В любом случае миниатюра изображения ограничена размером менее 64 КБ. байтов, потому что он должен соответствовать маркеру APP0.
После сегмента маркера JFIF может быть один или более необязательный маркер расширения JFIF сегменты. Сегменты расширения используются для хранения дополнительной информации. и встречаются только в JFIF версии 1. 02 и потом. Структура этих сегментов расширения показана ниже:
typedef структура _JFIFExtension { БАЙТ APP0[2]; /* 00h Маркер использования приложения */ БАЙТ Длина[2]; /* 02h Длина поля APP0 */ БАЙТ-идентификатор[5]; /* 04h "JFXX" (заканчивается нулем) Строка идентификатора */ БАЙТРасширенныйКод; /* 09h Идентификационный код расширения */ } JFIFEXTENSION;
APP0 содержит значения FFh E0h.
Длина хранит длину в байтах сегмента расширения.
Идентификатор содержит значения 4Ah 46h 58h 58h 00h (JFXX).
ExtensionCode указывает тип информации, которую этот маркер расширения магазины. Для версии 1.02 определены только коды расширения 10h. (миниатюра закодирована с использованием JPEG), 11h (миниатюра хранится с использованием 1-байтовых пикселей и палитры) и 13h (миниатюра хранится с использованием 3-байтовых пикселей RGB).
Данные расширения следуют за информацией сегмента расширения и различаются по размеру. и содержимое в зависимости от значения ExtensionCode. (См. текущую спецификацию JFIF для возможных форматов сегмента маркера расширения.)
Декодеры JFIF должны быть готовы игнорировать нераспознанные маркеры расширения и сегменты APPn. Специфично для приложения Маркеры APPn, не распознанные декодером JPEG, могут можно просто пропустить, используя поле длины данных маркера.
Маркер JFIF, по сути, является гарантией того, что файл соответствует соглашениям JFIF. Самый Поэтому декодеры JFIF учитывают Сегмент маркера JFIF является необязательным и вполне способен читать необработанный поток данных JPEG, который соответствует соглашениям JFIF в отношении цвета выравнивание пространства и образца. (там много таких файлов, потому что JFIF просто формализовал общепринятую практику в эти области.) Надежный декодер будет обрабатывать JFIF файл как поток блоков, без предположений о порядке блоков помимо тех, которые предусмотрены стандартом JPEG. Этот позволяет читать многие нестандартные и неверные Варианты файла JFIF, такие как вставленный маркер COM между маркерами SOI и JFIF APP0 (есть их тоже немало). Мы также рекомендуем декодер должен принимать любой файл JFIF с известным основной номер версии, даже если дополнительный номер версии новее, чем известные декодеру.
Фактические данные JPEG в JFIF файл следует всем маркерам APP0 и придерживается формата, определенного в Документация в формате JPEG. Базовый уровень Процесс JPEG является рекомендуемым типом данных изображения кодировка для использования в файлах JFIF. Это для обеспечить максимальную совместимость файлов JFIF для данных обмен.
Чтобы идентифицировать файл JFIF или поток данных, выполните поиск значения FFh D8h FFh. Это идентифицирует маркер SOI, за которым следует другой маркер. В правильном файле JFIF следующий байт будет E0h, что указывает на маркер JFIF APP0 сегмент. Однако возможно, что один или несколько других маркеров сегменты могут быть ошибочно записаны между SOI и Маркеры JFIF APP0 (нарушение спецификации JFIF). Как упоминалось ранее, декодер все равно должен попытаться прочитать файл.
Следующие два байта (длина сегмента APP0) различаются по значению, но обычно 00h 10h, за ними следуют пятибайтовые значения 4Ah 46ч 49ч 46ч 00ч (JFIF). Если эти значения найдены, маркер SOI (FFh D8h) отмечает начало Поток данных JFIF. Если только значения FFh D8h FFh найдены, но не остальные данные, то «сырые» Обнаружен поток данных JPEG. Все Потоки данных JFIF и JPEG заканчиваются со значениями маркера конца изображения (EOI) FFh D9час
Существует множество проприетарных форматов файлов изображений, содержащих Данные JPEG. Многие просто инкапсулируют поток данных JPEG или JFIF внутри их собственная оболочка формата файла. Сканирование для Маркер JPEG SOI и считывание до тех пор, пока маркер EOI не будет обычно позволяет извлечь Поток данных JPEG/JFIF. Как минимум один собственный формат файла изображения, формат .HSI от Handmade Программное обеспечение, содержит данные JPEG, но не может быть успешно читается или распаковывается без использования специального программного обеспечения, благодаря к проприетарным модификациям кодировки JPEG процесс. (Все файлы .HSI начинаются со значений 68h 73h 69ч 31ч и не следует считать обычными файлами JPEG.)
Только два непатентованных формата, кроме JFIF, в настоящее время поддерживают данные в формате JPEG. Последний версия формата PICT для Macintosh добавляет Заголовок PICT в файл JFIF ручей. Удалите заголовок PICT (все до маркера SOI) и любые завершающие данные (все после маркера EOI). маркер), и у вас есть эквивалент JFIF файл. Другой формат, TIFF 6.0, также поддерживает JPEG и подробно обсуждается в статье о ТИФФ.
Для получения дополнительной информации о формате файла JFIF см. см. спецификацию на компакт-диске. Вы также можете связаться C-Cube Microsystems по адресу:
C-Cube Микросистемы
Вниманию: Скотт Сент-Клер
Корпоративные коммуникации
1778 бульвар Маккарти.
Милпитас, Калифорния 95035
Голос: 408-944-6300
ФАКС: 408-944-6314
См. также главу 9.для получения информации о сжатии JPEG. JPEG FAQ и Часто задаваемые вопросы по сжатию, также включенные в компакт-диск, содержащий справочную информацию о JPEG.
Сам стандарт JPEG недоступен в электронном виде; Вы должны заказать бумажную копию через ИСО. В США копии стандартного можно заказать у:
Американский национальный институт стандартов, Inc.
Кому: Продажи
1430 Бродвей
Нью-Йорк, NY 10018
Голос: 212-642-4900
Стандарт разделен на две части; Часть 1 является фактической спецификацией, и Часть 2 посвящена методам проверки соответствия. Часть 1 проекта уже достигла Статус международного стандарта. См. этот документ:
Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном Изображения, часть 1: требования и рекомендации . Документ номер ISO/IEC IS 10918-1.
Часть 2 все еще находится в статусе проекта комитета. См. этот документ:
Цифровое сжатие и кодирование неподвижных изображений с непрерывным тоном Изображения, часть 2: проверка на соответствие . Номер документа ИСО/МЭК CD 10918-2.
См. обсуждение JPEG в главе 9 для получения списка дополнительных ссылок, в том числе имеющиеся в продаже книги, содержащие формат JPEG спецификация и часто задаваемые вопросы по JPEG (Часто задаваемые вопросы). CD-ROM содержит несколько программ и библиотек JPEG.
Эта страница взята из энциклопедии форматов графических файлов и лицензирован O’Reilly по лицензии Creative Common/Attribution.
Дополнительные ресурсы
Руководство по типам и форматам файлов изображений — технологии веб-медиа
В этом руководстве мы рассмотрим типы файлов изображений, обычно поддерживаемые веб-браузерами, и предоставим информацию, которая поможет вам выбрать наиболее подходящие форматы для использования. для изображений вашего сайта.
Ниже перечислены форматы файлов изображений, наиболее часто используемые в Интернете.
Примечание: Старые форматы, такие как PNG, JPEG, GIF, имеют низкую производительность по сравнению с более новыми форматами, такими как WebP и AVIF, но имеют более широкую «историческую» поддержку браузеров. Новые форматы изображений становятся все более популярными, поскольку браузеры без поддержки становятся все более неактуальными (то есть имеют практически нулевую долю рынка).
Следующий список включает форматы изображений, которые появляются в Интернете, но которых следует избегать для веб-контента (как правило, это связано с тем, что они не поддерживаются широкими браузерами или потому, что существуют лучшие альтернативы).
Примечание: Аббревиатура для каждого формата изображения связана с более подробным описанием формата, его возможностей и подробной информацией о совместимости браузера (включая информацию о поддерживаемых версиях и специальных функциях, которые могли быть представлены позже).
Примечание. В Safari 11.1 добавлена возможность использовать формат видео в качестве замены анимированного gif. Никакой другой браузер не поддерживает это. Смотрите ошибку Chromium и ошибку Firefox для получения дополнительной информации.
В следующих разделах представлен краткий обзор каждого из типов файлов изображений, поддерживаемых веб-браузерами.
В приведенных ниже таблицах термин бит на компонент относится к числу битов, используемых для представления каждого компонента цвета. Например, глубина цвета RGB, равная 8, означает, что каждый из компонентов красного, зеленого и синего представлен 8-битным значением. Битовая глубина , с другой стороны, это общее количество битов, используемых для представления каждого пикселя в памяти.
APNG (анимированная переносная сетевая графика)
APNG — это формат файла, впервые представленный Mozilla, который расширяет стандарт PNG, добавляя поддержку анимированных изображений. Концептуально похожий на анимированный формат GIF, который использовался в течение десятилетий, APNG более эффективен, поскольку поддерживает различную глубину цвета, тогда как анимированный GIF поддерживает только 8-битный индексированный цвет.
APNG идеально подходит для базовых анимаций, которые не нужно синхронизировать с другими действиями или со звуковой дорожкой, такими как индикаторы выполнения, индикаторы действий и другие анимированные последовательности. Например, APNG — это один из форматов, поддерживаемых при создании анимированных наклеек для приложения Apple iMessage (и приложения Messages на iOS). Они также обычно используются для анимированных частей пользовательского интерфейса веб-браузеров.
Изображение AVIF
Формат файла изображения AV1 (AVIF) — это мощный бесплатный формат файлов с открытым исходным кодом, который кодирует битовых потоков AV1 в контейнере High Efficiency Image File Format (HEIF).
Примечание: AVIF может стать «следующей большой вещью» для обмена изображениями в веб-контенте. Он предлагает самые современные функции и производительность без обременений сложными лицензиями и патентными отчислениями, которые препятствуют сопоставимым альтернативам.
AV1 — это формат кодирования, который изначально был разработан для передачи видео через Интернет. Этот формат выигрывает от значительных достижений в области кодирования видео в последние годы и может потенциально выиграть от соответствующей поддержки аппаратного рендеринга. Однако в некоторых случаях он также имеет недостатки, поскольку к кодированию видео и изображений предъявляются разные требования.
Формат предлагает:
- Отличное сжатие с потерями по сравнению с JPG и PNG для визуально схожих уровней сжатия (например, изображения AVIF с потерями примерно на 50% меньше, чем изображения JPEG).
- Обычно AVIF имеет лучшее сжатие, чем WebP — среднее значение сжатия 50% против 30% для одного и того же набора JPG (источник: Сравнение AVIF WebP (блог CTRL)).
- Сжатие без потерь.
- Хранение анимации/множества изображений (аналогично анимированным GIF, но с гораздо лучшим сжатием)
- Поддержка альфа-канала (т. е. для прозрачности).
- Расширенный динамический диапазон (HDR): поддержка хранения изображений, которые могут отображать больший контраст между самыми светлыми и самыми темными частями изображения.
- Широкий цветовой охват: поддержка изображений, которые могут содержать более широкий диапазон цветов.
AVIF не поддерживает прогрессивный рендеринг, поэтому файлы должны быть полностью загружены, прежде чем их можно будет отобразить. Это часто мало влияет на реальный опыт пользователя, потому что файлы AVIF намного меньше, чем эквивалентные файлы JPEG или PNG, и, следовательно, их можно загружать и отображать намного быстрее. Для файлов большего размера влияние может стать значительным, и вам следует рассмотреть возможность использования формата, поддерживающего прогрессивный рендеринг.
AVIF поддерживается на рабочем столе в Chrome, Opera и Firefox (Firefox поддерживает неподвижные изображения, но не анимацию).
Поскольку поддержка еще не является всеобъемлющей (и имеет небольшую историческую глубину), вы должны предоставить запасной вариант в формате WebP, JPEG или PNG, используя элемент
(или какой-либо другой подход).
BMP (файл Bitmap)
Тип файла BMP ( Bitmap image ) наиболее распространен на компьютерах с Windows и обычно используется только в особых случаях в веб-приложениях и содержимом.
Предупреждение: Обычно следует избегать использования файлов BMP для содержимого веб-сайта. Наиболее распространенная форма файла BMP представляет данные в виде несжатого растрового изображения, что приводит к большим размерам файлов по сравнению с типами изображений PNG или jpg. Существуют более эффективные форматы BMP, но они широко не используются и редко поддерживаются веб-браузерами.
Теоретически BMP поддерживает множество внутренних представлений данных.
Простейшая и наиболее часто используемая форма файла BMP представляет собой несжатое растровое изображение, в котором каждый пиксель занимает 3 байта, представляющих его красный, зеленый и синий компоненты, а каждая строка дополняется 0x00
байта до ширины, кратной 4 байтам.
Хотя в спецификации определены и другие представления данных, они широко не используются и часто вообще не реализуются. Эти функции включают в себя: поддержку различной битовой глубины, индексированного цвета, альфа-каналов и различных порядков пикселей (по умолчанию BMP записывается из левого нижнего угла вправо и вверх, а не из левого верхнего угла вправо и влево). нижний).
Теоретически поддерживаются несколько алгоритмов сжатия, и данные изображения также могут быть сохранены в формате JPEG или PNG в файле BMP.
GIF (формат обмена графикой)
В 1987 году поставщик онлайн-услуг CompuServe представил формат файла изображения GIF ( Graphics Interchange Format ), чтобы обеспечить формат сжатой графики, который могли использовать все участники их службы. GIF использует алгоритм Lempel-Ziv-Welch (LZW) для сжатия без потерь 8-битной индексированной цветной графики. GIF был одним из первых двух графических форматов, поддерживаемых HTML, наряду с XBM.
Каждый пиксель в GIF представлен одним 8-битным значением, служащим индексом в палитре 24-битных цветов (по 8 бит красного, зеленого и синего). Длина таблицы цветов всегда равна степени двойки (то есть каждая палитра имеет 2, 4, 8, 16, 32, 64 или 256 элементов). Для имитации более 255 или 256 цветов обычно используется сглаживание. Технически возможно объединить несколько блоков изображения, каждый со своей цветовой палитрой, для создания полноцветных изображений, но на практике это делается редко.
Пиксели непрозрачны, если определенный индекс цвета не обозначен как прозрачный, и в этом случае пиксели, окрашенные в это значение, полностью прозрачны.
GIF поддерживает простую анимацию, в которой после начального полноразмерного кадра предоставляется серия изображений, отражающих части изображения, которые изменяются с каждым кадром.
GIF был чрезвычайно популярен на протяжении десятилетий благодаря своей простоте и совместимости. Его поддержка анимации вызвала возрождение его популярности в эпоху социальных сетей, когда анимированные GIF-файлы стали широко использоваться для коротких «видео», мемов и других простых анимационных последовательностей.
Еще одна популярная функция GIF — поддержка чересстрочной развертки, когда ряды пикселей сохраняются не по порядку, так что частично полученные файлы могут отображаться в более низком качестве. Это особенно полезно при медленном сетевом соединении.
GIF — хороший выбор для простых изображений и анимации, хотя преобразование полноцветных изображений в GIF может привести к неудовлетворительному дизерингу. Как правило, современный контент должен использовать PNG для индексированных неподвижных изображений и без потерь, и следует рассмотреть возможность использования APNG для анимационных последовательностей без потерь.
ICO (значок Microsoft Windows)
Формат файла ICO (значок Microsoft Windows) был разработан Microsoft для значков рабочего стола систем Windows.
Однако в ранних версиях Internet Explorer появилась возможность для веб-сайта предоставить файл ICO с именем favicon.ico
в корневом каталоге веб-сайта, чтобы указать значок favicon — значок, который будет отображаться в меню «Избранное», и другие места, где было бы полезно изобразительное изображение сайта.
Файл ICO может содержать несколько значков и начинается с каталога со списком сведений о каждом из них. После каталога идут данные для иконок. Данные каждого значка могут быть либо изображением BMP без заголовка файла, либо полным изображением PNG (включая заголовок файла). Если вы используете файлы ICO, вам следует использовать формат BMP, так как поддержка PNG внутри файлов ICO не была добавлена до Windows Vista и может не поддерживаться должным образом.
Предупреждение: файлы ICO не должны можно использовать в веб-контенте.
Кроме того, их использование для фавиконов сократилось в пользу использования файла PNG и элемента
, как описано в разделе Предоставление значков для различных контекстов использования в: элемент ссылки на внешний ресурс.
JPEG (изображение Объединенной группы экспертов по фотографии)
Формат изображения JPEG (обычно произносится как « jay-peg ») в настоящее время является наиболее широко используемым форматом сжатия с потерями для неподвижных изображений. Это особенно полезно для фотографий; применение сжатия с потерями к содержимому, требующему резкости, например к диаграммам или диаграммам, может привести к неудовлетворительным результатам.
JPEG на самом деле является форматом данных для сжатых фотографий, а не типом файла. Спецификация JFIF ( J PEG F ile I формат обмена F ) описывает формат файлов, которые мы считаем изображениями в формате JPEG.
PNG (Portable Network Graphics)
Формат изображения PNG (произносится как « ping ») использует сжатие без потерь, поддерживает более высокую глубину цвета, чем GIF, и является более эффективным, а также поддерживает полную альфа-прозрачность.
PNG широко поддерживается, и все основные браузеры предлагают полную поддержку его функций. Internet Explorer, который представил поддержку PNG в версиях 4–5, не поддерживал ее полностью до IE 9, и в течение многих прошедших лет в нем было много печально известных ошибок, в том числе в когда-то вездесущем Internet Explorer 6. Это замедлило внедрение PNG, но теперь оно широко используется, особенно когда требуется точное воспроизведение исходного изображения.
SVG (масштабируемая векторная графика)
SVG — это формат векторной графики на основе XML, который указывает содержимое изображения в виде набора команд рисования, которые создают фигуры, линии, применяют цвета, фильтры и т. д. Файлы SVG идеально подходят для диаграмм, значков и других изображений, которые можно точно нарисовать в любом размере. Таким образом, SVG популярен для элементов пользовательского интерфейса в современном веб-дизайне.
Файлы SVG — это текстовые файлы, содержащие исходный код, который при интерпретации рисует желаемое изображение. Например, в этом примере определяется область рисования с начальным размером 100 на 100 единиц, содержащая линию, проведенную по диагонали через прямоугольник:
SVG можно использовать в веб-содержимом двумя способами:
- Вы можете напрямую написать элемент
- Вы можете отображать изображение SVG везде, где вы можете использовать любые другие типы изображений, в том числе с
background-image
и т.д.
SVG — идеальный выбор для изображений, которые могут быть представлены с помощью ряда команд рисования, особенно если размер, в котором будет отображаться изображение, неизвестен или может варьироваться, поскольку SVG плавно масштабируется до нужного размера. Как правило, это не очень удобно для чисто растровых или фотографических изображений, хотя растровые изображения можно включать в SVG.
TIFF (формат файла изображения с тегами)
TIFF — это формат файла растровой графики, который был создан для хранения отсканированных фотографий, хотя это может быть любое изображение. Это несколько «тяжелый» формат, поскольку файлы TIFF имеют тенденцию быть больше, чем изображения в других форматах. Это связано с часто включаемыми метаданными, а также с тем фактом, что большинство изображений TIFF либо несжаты, либо используют алгоритмы сжатия, которые после сжатия по-прежнему оставляют довольно большие файлы.
TIFF поддерживает множество методов сжатия, но наиболее часто используемыми являются системы сжатия CCITT Group 4 (и, для более старых факсимильных систем, Group 3), используемые программным обеспечением факса, а также LZW и сжатие JPEG с потерями.
Каждое значение в файле TIFF определяется с помощью тега (указывающего, что это за информация, например, ширина изображения) и его типа (указывающего формат, в котором хранятся данные), за которым следует длина массива значений для присвоения этому тегу (все свойства хранятся в массивах, даже для отдельных значений).
Это позволяет использовать разные типы данных для одних и тех же свойств.
Например, ширина изображения ImageWidth
хранится с использованием тега 9.0471 0x0100 и представляет собой массив с одной записью.
При указании типа 3 ( SHORT
) значение ImageWidth
сохраняется как 16-битное значение:
При указании типа 4 ( LONG
) ширина сохраняется как 32-битное значение:
Один файл TIFF может содержать несколько изображений; это может использоваться, например, для представления многостраничных документов (таких как многостраничный отсканированный документ или полученный факс). Однако программное обеспечение для чтения файлов TIFF требуется только для поддержки первого изображения.
TIFF поддерживает множество цветовых пространств, а не только RGB. К ним относятся CMYK, YCbCr и другие, что делает TIFF хорошим выбором для хранения изображений, предназначенных для печати, кино или телевидения.
Давным-давно некоторые браузеры поддерживали изображения TIFF в веб-содержимом; сегодня, однако, для этого необходимо использовать специальные библиотеки или надстройки для браузера. Таким образом, файлы TIFF бесполезны в контексте веб-контента, но обычно предоставляются загружаемые файлы TIFF при распространении фотографий и других изображений, предназначенных для точного редактирования или печати.
Изображение WebP
WebP поддерживает сжатие с потерями с помощью прогнозирующего кодирования на основе видеокодека VP8 и сжатие без потерь, в котором используются замены для повторяющихся данных. Изображения WebP с потерями в среднем на 25–35 % меньше, чем изображения JPEG с визуально схожими уровнями сжатия. Изображения WebP без потерь обычно на 26% меньше, чем те же изображения в формате PNG.
WebP также поддерживает анимацию: в файле WebP с потерями данные изображения представлены битовым потоком VP8, который может содержать несколько кадров.
WebP без потерь занимает 9-е местоБлок 0471 ANIM , описывающий анимацию, и блок ANMF
, представляющий кадр последовательности анимации.
Зацикливание поддерживается.
WebP теперь имеет широкую поддержку в последних версиях основных веб-браузеров, хотя и не имеет глубокой исторической поддержки.
Предоставьте запасной вариант в формате JPEG или PNG, например, с помощью элемента
.
Примечание: Несмотря на объявленную поддержку WebP в Safari 14, начиная с версии 14.0 изображения .webp не отображаются изначально на рабочем столе macOS, тогда как Safari на iOS 14 отображает изображения .webp должным образом.
XBM (файл растрового изображения системы X Window)
Файлы XBM (X Bitmap) были первыми, которые стали поддерживаться в Интернете, но больше не используются, и их следует избегать, поскольку их формат может иметь потенциальные проблемы с безопасностью. Современные браузеры уже много лет не поддерживают файлы XBM, но при работе со старым содержимым вы можете найти некоторые из них.
XBM использует фрагмент кода C для представления содержимого изображения в виде массива байтов.
Каждое изображение состоит из 2–4 #define
, предоставляя ширину и высоту растрового изображения (и, возможно, горячую точку, если изображение спроектировано как курсор), за которыми следует массив из беззнакового символа
, где каждое значение содержит 8 1-битных монохромных пикселей.
Изображение должно быть кратно 8 пикселям в ширину. Например, следующий код представляет изображение XBM размером 8 на 8 пикселей, причем эти пиксели расположены в черно-белом шахматном порядке:
#define square8_width 8 # определить площадь8_высота 8 статический символ без знака Square8_bits[] = { 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55 };
Выбрать лучший формат изображения для ваших нужд, вероятно, проще, чем форматы видео, поскольку существует меньше вариантов с широкой поддержкой, и каждый из них, как правило, имеет определенный набор вариантов использования.
Фотографии
Фотографии обычно хорошо работают при сжатии с потерями (в зависимости от конфигурации кодировщика). Это делает JPEG и WebP хорошим выбором для фотографий, причем JPEG более совместим, но WebP, возможно, предлагает лучшее сжатие. Чтобы максимально повысить качество и сократить время загрузки, рассмотрите возможность использования резервного варианта с WebP в качестве первого варианта и JPEG в качестве второго. В противном случае JPEG является безопасным выбором для совместимости.
Лучший выбор | Резервный вариант |
---|---|
WebP или JPEG | JPEG |
Иконки
Для небольших изображений, таких как значки, используйте формат без потерь, чтобы избежать потери деталей в изображении ограниченного размера. Хотя WebP без потерь идеально подходит для этой цели, поддержка еще не получила широкого распространения, поэтому PNG — лучший выбор, если вы не предлагаете запасной вариант. Если ваше изображение содержит менее 256 цветов, можно использовать GIF, хотя PNG часто сжимает еще меньше с помощью опции индексированного сжатия (PNG-8).
Если значок может быть представлен с помощью векторной графики, рассмотрите возможность использования SVG, так как он масштабируется для различных разрешений и размеров, поэтому он идеально подходит для адаптивного дизайна. Хотя поддержка SVG хороша, возможно, стоит предложить резервную копию PNG для старых браузеров.
Лучший выбор | Резервный вариант |
---|---|
SVG, WebP без потерь или PNG | PNG |
Скриншоты
Если вы не хотите идти на компромисс в отношении качества, вам следует использовать формат без потерь для скриншотов. Это особенно важно, если на скриншоте есть текст, так как текст легко становится нечетким и нечетким при сжатии с потерями.
PNG, вероятно, ваш лучший выбор, но WebP без потерь, возможно, будет лучше сжат.
Лучший выбор | Резервный вариант |
---|---|
WebP или PNG без потерь; JPEG, если артефакты сжатия не беспокойство | PNG или JPEG; GIF для скриншотов с малым количеством цветов |
Диаграммы, рисунки и диаграммы
Для любого изображения, которое можно представить с помощью векторной графики, SVG — лучший выбор. В противном случае вы должны использовать формат без потерь, такой как PNG. Если вы выберете формат с потерями, такой как JPEG или WebP с потерями, тщательно взвесьте уровень сжатия, чтобы текст или другие формы не стали нечеткими или нечеткими.
Лучший выбор | Резервный вариант |
---|---|
СВГ | PNG |
Хотя стандартный элемент HTML
не поддерживает резервные варианты совместимости для изображений, элемент
поддерживает.
используется в качестве обертки для ряда элементов
, каждый из которых определяет версию изображения в другом формате или в разных условиях носителя, а также
элемент, который определяет, где отображать изображение и откат к версии по умолчанию или «наиболее совместимой».
Например, если вы показываете диаграмму, лучше всего отображаемую в формате SVG, но хотите предложить альтернативу диаграмме в формате PNG или GIF, вы должны сделать что-то вроде этого:
Вы можете указать столько
, сколько пожелаете, хотя обычно достаточно 2 или 3.
- Руководство по типам и форматам носителей
- Технологии веб-медиа
- Руководство по видеокодекам, используемым в Интернете
- HTML
- Свойство CSS
background-image
- Конструктор
HTMLImageElement. Image()
иHTMLImageElement
интерфейс
Последнее изменение: , участниками MDN
formats/jpeg.md at master · corkami/formats · GitHub
JPEG (Joint Photographic Experts Group) — кодировка изображения, JFIF (формат обмена файлами JPEG) — это формат хранения файлов.
Официальные спецификации
- Формат обмена файлами JPEG v1.02, 1 сентября 1992 г.
- МСЭ Т.81 | ISO IEC 10918-1: Информационные технологии. Цифровое сжатие и кодирование неподвижных изображений с непрерывной тональностью. Требования и рекомендации
источников:
- libjpeg: список: jdmarker.c#L21 , обработка: jdmarker.c#L1113
- libjpeg-турбо
- Ральф Джайлз jpegdump.c
- OpenJPEG j2k.h
- Инструменты Exif Теги JPEG
- JPEG-кодировщик-python, NanoJPEG, microJPEG
Инструмент и источник:
- JPEGsnoop, JfifDecode. h
Это могла бы быть очень простая структура, если бы не было исключений.
Файл JPEG представляет собой последовательность фрагментов Type-Length-Value, называемых сегментов : \хFF; маркер:с; длина(значение+2):>u2; значение;длина*c;
- тип определяется маркером : 2 байта,
FF
, затем ненулевым байтом (*). - длина имеет прямой порядок байтов на 2 байта и покрывает сам размер. Таким образом, длина всего сегмента равна
2 + длина
(чтобы покрыть длину маркера ). Это также означает, что любой сегмент имеет длину не более 65537 байт.
(*) это правило ненулевого байта важно: если любая кодировка данных выводит FF
байт, то после него следует закодировать литерал 00
, чтобы выразить, что это FF
байт данных, а не маркер сегмента.
Исключения
В этой структуре TLV есть 2 исключения:
Общая структура JPEG : Скан тоже сегмент, но ECS возможен только сразу после сканирования.
маркеры без параметров
Некоторые типы маркеров не имеют параметров: без длины, без значения, просто маркер:
- магическая подпись , по смещению
0
, называемая Начало изображения (SOI):FF
D8
- терминатор , в конце файла, называемый Конец изображения (EOI):
FF
D9
- маркеры перезапуска,
FF
D0
—D7
, которые являются просто необязательными индикаторами в середине данныхECS
.
Энтропийно-кодированный сегмент
Начало сканирования — правильно определенный TLV-сегмент. Сразу после этого начинается энтропийно-кодированный сегмент , который не следует никакому аналогичному соглашению, несмотря на то же имя сегмента .
Это, вероятно, позволит ECS увеличиться до любого размера, превышающего обычное ограничение в 65537 байт: они представляют большую часть данных файла — справедливо считать, что формат JFIF вводит в заблуждение: хорошо структурированные фрагменты с неясным огромным ECS blob в середине.
Его длина заранее неизвестна и не определена в файле.
Единственный способ получить его длину — это либо декодировать его, либо перемотать вперед:
просто просканируйте вперед FF
байта. Если это маркер перезапуска (за которым следует D0
— D7
) или данные FF
(за которым следует 00
), продолжайте.
файла начинаются с
Большинство файлов JPEG начинаются с FF D8
FF E0
00 10
.J .F .I .F 00
, что приводит к следующим неверным предположениям:
- подпись , а не
FF D8 FF E0
по смещению0
илиJFIF
по смещению6
.
Читается как:
- a Маркер начала изображения ,
FF D8
. Этот является подписью, установленной по смещению0
. - сегмент а: с маркером
Application 0
(закодированоFF E0
) и длиной 16 (закодировано00 10
) - его данные:
- и
JFIF\0
подпись. - , затем остальная часть APP0 куска, здесь мало интересного..
Но многие файлы JPEG не имеют сегмента FF E0
со смещением 3, например, с информацией EXIF и начинаются так:
-
FF D8
FF E1
XX YY
.E .x .i .f \0
….
рассеченный RGB JPEG :
из сегментов SOI, APP9, DQT, SOS, DHT*4, SOS (с ECS), затем EOI
Наблюдения:
- Подпись слишком короткая и не читается человеком.
- «заголовок по умолчанию», то есть APP0 , не содержит типичной информации, такой как размеры или цветовое пространство, что фактически делает их необязательными (!)
- таблица квантования 100% качества очень неоптимизирована.
Структура JFIF (скачать PDF) (из официальных спецификаций)
Насколько нам известно, сокращенный формат (в котором несколько файлов JPG передаются без повторного использования заголовка).
JPEG зарезервировано
-
00
: ноль JPEG зарезервировано
зарезервировано
-
01
: TEM временный маркер для арифметического кодирования -
02
: RESn зарезервировано 02-FB
JPEG 1994
определено в ITU T.81 | ИСО МЭК 10918-1
типа кадра (поддерживается libjpeg: 01/2/9/10):
-
C0
: SOF0 начало кадра (базовый jpeg) -
C1
: SOF1 начало кадра (расширенный последовательный, Хаффман) -
C2
: SOF2 начало кадра (прогрессивный, Хаффман) -
C3
: SOF3 начало кадра (без потерь, Хаффман) libjpeg-unsupported - (
C4
→ см. DHT ) -
C5
: SOF5 начало кадра (дифференциальный последовательный, Хаффман) libjpeg-unsupported -
C6
: SOF6 начало кадра (дифференциальный прогрессивный, Хаффман) libjpeg-unsupported -
C7
: SOF7 начало кадра (дифференциал без потерь, Хаффман) libjpeg-unsupported - (
C8
→ см. JPG ) -
С9
: SOF9 начало кадра (расширенный последовательный, арифметический) -
CA
: SOF10 начало кадра (прогрессивный, арифметический) -
CB
: SOF11 начало кадра (без потерь, арифметика) libjpeg-unsupported - (
CC
→ см. DAC ) -
CD
: SOF13 начало кадра (дифференциально-последовательный, арифметический) libjpeg-unsupported -
CE
: SOF14 начало кадра (дифференциально-прогрессивный, арифметический) libjpeg-unsupported -
CF
: SOF15 начало кадра (дифференциальное без потерь, арифметическое) libjpeg-unsupported
Другие
C8
: JPG зарезервировано для расширения JPEG libjpeg-unsupportedC4
: DHT определение таблиц ХаффманаCC
: DAC определение условий арифметического кодирования libjpeg-skiped
маркеры перезапуска (без параметров), только в данных сканирования:
-
D0
: RST0 маркер перезапуска 0 -
D1
: RST1 маркер перезапуска 1 -
D2
: RST2 маркер перезапуска 2 -
D3
: RST3 маркер перезапуска 3 -
D4
: RST4 маркер перезапуска 4 -
D5
: RST5 маркер перезапуска 5 -
D6
: RST6 маркер перезапуска 6 -
D7
: RST7 маркер перезапуска 7
разделители:
-
D8
: SOI начало изображения (без параметров) -
D9
: EOI конец изображения (без параметров) -
ДА
: SOS начало сканирования -
DB
: DQT определение таблиц квантования -
DC
: DNL определить количество строк # libjpeg-skiped -
DD
: DRI определить интервал перезапуска -
DE
: DHP определить иерархическую последовательность -
DF
: EXP расширить каталог компонентов -
FE
: COM данные расширения (комментарий)
JPEG 1997
расширения ITU T. 84 | ИСО МЭК 10918-3
сегмента приложений:
-
E0
: APP0 сегмент приложения 0 (JFIF (длина >= 14) / JFXX (длина >= 6) / AVI MJPEG) -
E1
: APP1 сегмент приложения 1 (EXIF/XMP/XAP?) -
E2
: APP2 сегмент приложения 2 (FlashPix/ICC) -
E3
: APP3 прикладной сегмент 3 (Kodak/…) -
E4
: APP4 сегмент приложения 4 (FlashPix/…) -
E5
: APP5 сегмент приложений 5 (Ricoh…) -
E6
: APP6 сегмент приложения 6 (GoPro…) -
E7
: APP7 сегмент приложений 7 (Pentax/Qualcomm) -
E8
: APP8 сегмент приложения 8 (Spiff) -
E9
: APP9 прикладной сегмент 9(MediaJukebox) -
EA
: APP10 прикладной сегмент 10 (PhotoStudio) -
EB
: APP11 сегмент приложений 11 (HDR) -
EC
: ПРИЛОЖЕНИЕ 12 сегмент приложения 12 (фотошоп уточка / сохранить для сети) -
ED
: APP13 сегмент приложения 13 (фотошоп сохранить как) -
EE
: APP14 сегмент приложения 14 («adobe» (длина = 12)) -
EF
: APP15 сегмент приложений 15 (GraphicConverter)
разделы расширенных данных:
-
F0
: JPG0 данные расширения 00 libjpeg-unsupported -
F1
: JPG1 данные расширения 01 libjpeg-неизвестно -
F2
: JPG2 данные расширения 02 libjpeg-неизвестно -
F3
: JPG3 данные расширения 03 libjpeg-неизвестно -
F4
: JPG4 данные расширения 04 libjpeg-неизвестно -
F5
: JPG5 данные расширения 05 libjpeg-неизвестно -
F6
: JPG6 данные расширения 06 libjpeg-неизвестно - (
F7
→ см. SOF48 ) - (
F8
→ см. LSE ) -
F9
: JPG9 данные расширения 09 libjpeg-неизвестно -
FA
: JPG10 данные расширения 10 libjpeg-unknown -
FB
: JPG11 данные расширения 11 libjpeg-unknown -
FC
: JPG12 данные расширения 12 libjpeg-unknown -
FD
: JPG13 данные расширения 13 libjpeg-unsupported
JPEG-LS (без потерь):
-
F7
: SOF48 начало кадра -
F8
: Параметры расширения LSE
определено в IEC 15444-1 JPEG 2000 Core (часть 1)
Файл JP2 начинается со структуры Atom/Box (например, mp4/mov, с типичным атомом ftyp
…)
затем в конечном итоге содержит блок длиной 0
(до конца файла), который затем содержит структуру сегмента/маркеров JFIF с этими
разделителей:
-
4F
: SOC начало кодового потока -
90
: SOT начало плитки -
93
: СОД начало . ..? -
D9
: EOC конец кодированного потока (перекрывается EOI)
фиксированный информационный сегмент:
-
51
: SIZ размер изображения и плитки
функциональных сегмента:
-
52
: COD стиль кодирования по умолчанию -
53
: COC компонент стиля кодирования -
5E
: RGN область интереса -
5C
: QCD квантование по умолчанию -
5D
: QCC компонент квантования -
5F
: POC изменение порядка продвижения
сегментов указателя:
-
55
: TLM Длина плитки -
57
: Длина пакета PLM (главный заголовок) -
58
: PLT Длина пакета (заголовок фрагмента) -
60
: PPM заголовки упакованных пакетов (основной заголовок) -
61
: PPT заголовки упакованных пакетов (заголовок части фрагмента)
внутренние маркеры и сегменты битового потока:
-
91
: СОП начало пакета -
92
: EPH конец заголовка пакета
информационных сегмента:
63
: CRG регистрация компонента64
: COM комментарий78
: CBD Определение битовой глубины компонента74
: MCT Преобразование нескольких компонентов75
: MCC Коллекция нескольких компонентов77
: MCO Заказ преобразования нескольких компонентов
Часть 8. Безопасный JPEG 2000
-
65
: SEC SEcured Codestream -
94
: INSEC INSEcured Codestream
Часть 11: JPEG 2000 для беспроводной связи
-
68
: EPC Возможность защиты от ошибок -
66
: EPB Блок защиты от ошибок -
67
: ESD Дескриптор чувствительности к ошибкам -
69
: КРАСНЫЙ Дескриптор остаточной ошибки
х 0 | х 1 | x2 | х3 | x4 | х5 | х6 | х7 | x8 | х9 | хА | хВ | хС | хД | хЕ | xF | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | ноль | ТЭМ | ||||||||||||||
5x | СИЗ | Код наложенного платежа | КОК | ТЛМ | ПЛМ | ПЛТ | ККД | ККК | РГН | ПК | ||||||
6x | Ч/МН | РРТ | CRG | КОМ | СЕК | ЭПБ | ПАЗ | ЭПК | КРАСНЫЙ | |||||||
9x | СОТ | СОП | ЭПХ | СОД | ИНСЕК | |||||||||||
Сх | SOF0 | SOF1 | SOF2 | SOF3 | ДХТ | SOF5 | SOF6 | SOF7 | JPG | SOF9 | SOF10 | SOF11 | ЦАП | SOF13 | SOF14 | SOF15 |
Дх | РСТ0 | РСТ1 | РСТ2 | РСТ3 | РСТ4 | РСТ5 | РСТ6 | РСТ7 | СОИ | EOI/EOC | SOS | ДКТ | ДНЛ | ДРИ | ДХП | ОПЫТ |
Пример | ПРИЛОЖЕНИЕ0 | ПРИЛОЖЕНИЕ1 | ПРИЛОЖЕНИЕ2 | ПРИЛОЖЕНИЕ3 | ПРИЛОЖЕНИЕ4 | ПРИЛОЖЕНИЕ5 | ПРИЛОЖЕНИЕ6 | ПРИЛОЖЕНИЕ7 | ПРИЛОЖЕНИЕ8 | ПРИЛОЖЕНИЕ9 | ПРИЛОЖЕНИЕ10 | ПРИЛОЖЕНИЕ11 | ПРИЛОЖЕНИЕ12 | ПРИЛОЖЕНИЕ13 | ПРИЛОЖЕНИЕ14 | ПРИЛОЖЕНИЕ15 |
Факс | JPG0 | JPG1 | JPG2 | JPG3 | JPG4 | JPG5 | JPG6 | SOF48 | ЛСЭ | JPG9 | JPG10 | JPG11 | JPG12 | JPG13 | КОМ |
Формат файла QuickTime
нет настоящего стандарта, 3 варианта:
- чистая конкатенация изображений JPG. сразу после
EOI
следует новыйSOI
следующего кадра. См. кодек FFMpegmjpeg
. - Motion-JPEG A (настоящий JFIF): начинается как изображение JFIF, с тегом
FF E1
APP1, затем тегомmjpg
, но затем со стандартной структурой JFIF (маркеры,00
, заполненные ECS). - Motion-JPEG B (не JFIF): начинается непосредственно как маркер mjpg, затем маркер JFIF для различных сегментов отсутствует, начиная с
mjpg Заголовок
содержит указатели на таблицу квантования, таблицу Хаффмана, начало кадра и начало сканирования… Данные ECS не заполнены00
байтами.
-
Сегменты APPx
не применяются по смещению 0, несмотря на спецификации. Они даже не требуются.
хранилище без потерь:
- , чтобы JPEG хранил данные без потерь: используйте оттенки серого, качество 100%, затем либо ширину, либо от восьми до 1 пикселя, либо дублируйте дополненные данные 8 раз (изображения JPEG хранятся в блоках 8×8).
разделенных сканов:
-
ECS
легко превышает 64 КБ, в то время как сегмент COMment ограничен 64 КБ, поэтому, чтобы сохранить большой JPEG в комментариях, разделите сканирование, сделав JPEG прогрессивным или используя пользовательские сканирования с помощью управления последовательностью многократного сканирования JPEGTran
Форматы файлов JPEG и TIFF
Зная, какой тип изображения использовать, вы сможете максимально эффективно использовать свои цифровые фотографии. Некоторые типы изображений лучше всего подходят для получения оптимального баланса качества и размера файла при хранении ваших фотографий, в то время как другие типы изображений упрощают восстановление после плохой фотографии. Существует бесчисленное множество форматов изображений, и постоянно добавляются новые; в этом разделе мы сосредоточимся на параметрах, связанных с двумя из трех форматов, наиболее важных для цифровой фотографии: JPEG и TIFF. Формат файла RAW рассматривается в отдельном руководстве.
ВВЕДЕНИЕ: СЖАТИЕ ИЗОБРАЖЕНИЙ
Важным понятием, которое отличает многие типы изображений, является то, сжаты ли они. Сжатые файлы значительно меньше, чем их несжатые аналоги, и делятся на две основные категории: «с потерями» и «без потерь». Сжатие без потерь гарантирует, что вся информация об изображении будет сохранена, даже если в результате размер файла немного увеличится. Сжатие с потерями, напротив, может создавать значительно меньшие размеры файлов, но достигается это за счет выборочного отбрасывания данных изображения. Таким образом, полученный сжатый файл больше не идентичен оригиналу. Видимые различия между этими сжатыми файлами и их оригиналом называются «артефактами сжатия».
ФОРМАТ ФАЙЛА JPEG
JPEG расшифровывается как «Joint Photographic Expert Group» и, как следует из названия, был специально разработан для хранения фотографических изображений. Он также стал стандартным форматом для хранения изображений в цифровых камерах и отображения фотографических изображений на веб-страницах в Интернете. Файлы JPEG значительно меньше файлов, сохраненных в формате TIFF, однако за это приходится платить, поскольку JPEG использует сжатие с потерями. Отличительной чертой файлов JPEG является их гибкость. Формат файла JPEG на самом деле представляет собой набор опций, настройки которых можно изменить в соответствии с потребностями каждого изображения.
Файлы JPEG имеют меньший размер за счет сжатия изображения таким образом, чтобы сохранить наиболее важные детали и отбросить детали, которые считаются менее важными для визуального восприятия. JPEG делает это, используя тот факт, что человеческий глаз замечает небольшие различия в яркости больше, чем незначительные различия в цвете. Таким образом, достигаемая степень сжатия сильно зависит от содержимого изображения; изображения с высоким уровнем шума или большим количеством деталей не будут так легко сжиматься, в то время как изображения с гладким небом и небольшой текстурой сжимаются очень хорошо.
Изображение с высокой детализацией
(менее эффективное сжатие JPEG)
Изображение без мелких деталей
(Более эффективное сжатие JPEG)
Также полезно получить визуальное представление о том, как различные степени сжатия влияют на качество изображения. При 100% вы едва заметите разницу между сжатым и несжатым изображением ниже, если вообще заметите. Обратите внимание, как алгоритм JPEG отдает приоритет выступающим высококонтрастным краям за счет более тонких текстур. По мере снижения качества сжатия алгоритм JPEG вынужден жертвовать качеством все более и более визуально заметных текстур, чтобы продолжать уменьшать размер файла.
Исходное изображение
Выберите качество сжатия: | 100% | 80% | 60% | 30% | 10% |
Сжатое изображение
ФОРМАТ ФАЙЛА TIFF
TIFF означает «Формат файла изображения с тегами» и является стандартом в полиграфической и издательской отрасли. Файлы TIFF значительно больше, чем их аналоги JPEG, и могут быть как несжатыми, так и сжатыми с использованием сжатия без потерь. В отличие от JPEG, файлы TIFF могут иметь разрядность 16 бит на канал или 8 бит на канал, а в одном файле TIFF можно хранить несколько многослойных изображений.
Файлы TIFF являются отличным вариантом для архивирования промежуточных файлов, которые вы можете отредактировать позже, поскольку они не создают артефактов сжатия. Многие камеры имеют возможность создавать изображения в виде файлов TIFF, но они могут занимать больше места по сравнению с тем же файлом JPEG. Если ваша камера поддерживает формат файлов RAW, это лучшая альтернатива, поскольку они значительно меньше и могут хранить еще больше информации о вашем изображении.
ПОЛЕЗНЫЕ СОВЕТЫ
- Сохраняйте изображение, используя сжатие с потерями, только после завершения всех остальных операций редактирования изображения, поскольку многие манипуляции с изображением могут усиливать артефакты сжатия.
- Избегайте многократного сжатия файла, так как артефакты сжатия могут накапливаться и постепенно ухудшать качество изображения. В таких случаях алгоритм JPEG также будет создавать файлы все большего и большего размера с тем же уровнем сжатия.
- Убедитесь, что уровень шума изображения как можно ниже, так как это приведет к созданию файлов JPEG значительно меньшего размера.
Хотите узнать больше? Обсудите эту и другие статьи на наших форумах цифровой фотографии.
Формат изображения JPEG: преимущества и недостатки [Обновлено в 2022 г.]
На днях я обсуждал это со своим другом Томом, и он утверждал, что большинство людей не знают различий между форматами изображений. «А зачем нам?». Что ж, я попробовал и, наконец, убедил его, что выбор правильного формата для его фотографий имеет решающее значение и что он заметит существенную разницу, выбирая его правильно в каждом случае. Например, мы знаем, что такое изображение в формате JPEG, но полезно лучше увидеть этот формат.
В этой статье мы обсудим историю формата JPEG (не волнуйтесь, это будет небольшой флешбэк), проанализируем характеристики формата и рассмотрим его преимущества и недостатки. Наконец, мы поделимся некоторыми советами, которые помогут вам выбрать, следует ли и когда использовать JPEG для ваших фотографий.
Если вы спросите профессионального фотографа: «Вы снимаете в формате JPEG?» вы, вероятно, получите очень страстный отрицательный ответ, поскольку большинство фотографов снимают в форматах RAW или TIFF. С другой стороны, только на Facebook каждую минуту попадает более 200 000 изображений, и более 90% из них сделаны в формате JPEG. Становится очевидным, что JPEG является самым популярным типом изображений во всем мире, и на то есть веские причины.
Содержание
- 0.1 История формата файла JPEG
- 0.2 Что такое формат изображения JPEG?
- 0.3 JPEG Categories
- 1 JPEG Format: Advantages and Disadvantages
- 1.1 JPEG Advantages
- 1.2 JPEG’s Disadvantages
- 1.3 Tools to Work with JPEG
- 1.4 Tips for Using JPEG Format Effectively
- 1.5 Rashed Al Mamoon
- 1.5.0.1 COO & CTO
История формата файла JPEG Группа установила стандарт JPEG в 1986 и продолжал развивать формат на протяжении многих лет. Формат был разработан для обработки файлов фотографических изображений с использованием алгоритма, который уменьшает размер файла с небольшими затратами на качество изображения.
Хотя в первые годы его использовали в основном фотографы, он быстро стал популярным. Из-за появления Интернета и цифровой фотографии в 1990 году файлы изображений меньшего размера стали чрезвычайно популярными, и многие люди предпочитали JPEG другим форматам из-за этой функции. В настоящее время фотографии в формате JPEG используются для огромного количества задач, так как по состоянию на 2015 год ежедневно создается несколько миллиардов изображений в формате JPEG9.0005
Что такое формат изображения JPEG?
Как упоминалось выше, разработчики формата JPEG создали алгоритм для сжатия больших файлов и их автоматического преобразования в файлы меньшего размера с небольшим снижением качества изображения. По этой причине JPEG является одним из наиболее часто используемых стандартов для сжатия изображений и фотографий.
Человеческий глаз щепетилен в обнаружении изменений яркости, но относительно плохо замечает изменения оттенка и насыщенности. По этой причине сжатие JPEG использует собственное цветовое пространство RGB в качестве цветового пространства при максимальном качестве, но если вы опустите его ниже, данные будут преобразованы в рабочее пространство, называемое YCC, где Y — это яркость, а два C — это каналы цветности.
Разрешение этих двух цветовых каналов можно уменьшить вдвое без визуальной потери качества изображения, что и делает алгоритм JPEG. Это называется Chroma Subsampling и может быть 4:4:4 (без понижения дискретизации), 4:2:2 (уменьшено вдвое по горизонтали) или 4:2:0 (уменьшено вдвое по горизонтали и вертикали). Глаз более чувствителен к деталям по вертикали, поэтому уменьшение горизонтального разрешения вдвое в JPEG в большинстве случаев проходит незамеченным. Хотя это деление пополам невидимо для наших глаз, потеря информации существенна, когда дело доходит до редактирования изображения JPEG.
Чтобы быть более понятным, JPEG работает исключительно хорошо, когда речь идет о сложных изображениях, включая множество градиентов и информацию о цвете в целом. Однако сжатие JPEG не идеально подходит для изображений со сплошными линиями или текстом. Не забывайте, что JPEG, как и любой стандартный тип изображения, имеет определенные преимущества и недостатки. Прежде чем мы углубимся в преимущества и недостатки JPEG, давайте кратко рассмотрим две основные категории формата.
Категории JPEG
Объединенная экспертная группа по фотографии также разработала стандарты JPEG 2000 и JPEG XR, которые характеризуются как улучшенные версии стандарта JPEG. Несмотря на то, что большинство людей не видят разницы, существуют две основные подкатегории формата изображений JPEG:
- JPEG/Exif — для изображений, снятых цифровыми камерами
- JPEG/JFIF — для передачи и хранения файлов, в основном в Интернете.
Как и в большинстве случаев, выбор JPEG вместо RAW или других форматов фотографий имеет свои преимущества и недостатки. Следовательно, существуют определенные причины или обстоятельства, при которых использование формата JPEG предпочтительнее даже для профессиональных фотографов.
С другой стороны, тот факт, что JPEG широко используется в камерах и смартфонах, не обязательно означает, что следует игнорировать его ограничения. Надеюсь, прочитав преимущества и недостатки формата, вы решите, какой дизайн лучше всего соответствует вашим потребностям.
Преимущества JPEG
JPEG уже много лет является самым популярным форматом фотографий по уважительным причинам. Изображение в формате JPEG легко редактировать и с ним работать, оно небольшого размера, является одним из самых быстрых способов съемки, быстрой доставки и чрезвычайно совместимо практически с любым устройством.
Мы проанализируем все эти преимущества один за другим, чтобы помочь вам понять причины популярности формата и решить, является ли съемка в формате JPEG лучшим вариантом для вас как любителя или профессионального фотографа.
- Небольшой размер файла : Что касается размера, изображения JPEG нельзя сравнивать с изображениями любого другого типа. Использование JPEG — лучший способ сэкономить место в камере или смартфоне. В зависимости от фотографии размер JPEG варьируется от 4 до 7 МБ, а размер RAW составляет примерно 25 МБ. Это важная особенность изображения JPEG и причина популярности формата.
- Высокое разрешение: Несмотря на то, что он не обеспечивает качество и разрешение изображения TIFF или RAW, JPEG поддерживает 24-битный цвет и до 16 миллионов цветов. Этот факт сужает снижение качества, делая практически невозможным обнаружение различий человеческим глазом.
- Лучше в режиме серийной съемки (или серийной съемке): Из-за размера JPEG этот формат позволяет делать более качественные фотографии в режиме серийной съемки.
- Полная совместимость: Еще одно существенное преимущество JPEG по сравнению с другими форматами заключается в том, что фотографии в формате JPEG можно открывать или редактировать практически на любом компьютере, смартфоне, фотоаппарате и программном обеспечении, представленных на рынке.
- Регулируемое сжатие : Это означает, что в большинстве устройств для фотосъемки формат JPEG позволяет вам выбрать, какой частью качества изображения вы хотите «пожертвовать» в зависимости от доступного места.
- Печать : К счастью, изображения в формате JPEG можно распечатать напрямую с камеры или смартфона без использования программного обеспечения для редактирования фотографий.
- Быстрая доставка и быстрая передача: Небольшой размер формата делает его лучшим вариантом для хранения, онлайн-распространения и передачи файлов.
- Публикация в социальных сетях: Файлами JPEG можно поделиться прямо из камеры, в то время как файлы RAW, например, имеют больший объем и должны быть отредактированы, прежде чем ими можно будет поделиться.
Недостатки JPEG
Теперь, когда мы проанализировали преимущества JPEG, пришло время понять, почему этот формат не является предпочтительным для многих профессиональных фотографов и фотографов-любителей. Хотя сжатие JPEG идеально подходит для размера и совместимости, это идет на компромисс в качестве.
Фотографии в формате JPEG сложнее контролировать, они ограничены по глубине, а в некоторых случаях это неправильный выбор. Давайте подробно рассмотрим недостатки JPEG и поймем, почему JPEG не является правильным выбором в некоторых случаях:
- Сжатие отбрасывает данные: Это означает, что стандарт JPEG стирает некоторые данные о цвете, чтобы сделать вывод меньше в размер. Эти цветовые данные отбрасываются при сжатии файла, и вы не сможете впоследствии манипулировать ими с помощью программного обеспечения для редактирования. Таким образом, фотографии в формате JPEG имеют ограниченную глубину, поскольку формат записывает только 256 цветовых тонов в каждом канале, в то время как изображения RAW могут записывать более 409 тонов.6.
- Управление обработкой: Когда вы снимаете в формате JPEG, вы ограничиваете цветовые вариации и процессор вашей камеры. По этой причине, например, съемка в формате JPEG на цифровую зеркальную камеру похожа на использование автомобиля Ferrari для доставки еды.
- Баланс белого: Учитывая тот факт, что при съемке в формате JPEG корректировка баланса белого в дальнейшем невозможна, во избежание неприятных сюрпризов приходится выставлять баланс белого заранее.
- Нет прозрачности или непрозрачности: В отличие от таких форматов, как PNG, формат JPEG не поддерживает прозрачность или непрозрачность.
- Повторное сохранение JPEG: Как правило, повторное сохранение JPEG не является хорошей идеей, поскольку повторные сохранения JPEG в конечном итоге могут ухудшить качество изображения.
Инструменты для работы с JPEG
Как упоминалось в разделе о преимуществах JPEG, этот формат обеспечивает максимальную совместимость. В настоящее время у всех людей есть доступ к огромному количеству инструментов для фотографии; Формат JPEG оказался одним из лучших вариантов для обработки фотографий.
Чтобы быть более конкретным, я использовал два приложения для редактирования фотографий в течение последних пяти лет. Первый — Adobe Photoshop, а второй — Picverse. В некоторых случаях я предпочитаю снимать в формате JPEG, а в других — в формате RAW. Когда дело доходит до редактирования фотографий, мне нужно иметь возможность загружать фотографии, отредактированные на моем iPad, который не является моей основной компьютерной системой.
В тех случаях, когда у меня нет времени или мне не нужно максимальное качество изображения, комбинация съемки в формате JPEG и последующего редактирования фотографий в Picverse спасает жизнь. Этот личный опыт — прекрасный пример соответствия JPEG многочисленным задачам и инструментам.
Фотографии в формате JPEG меньше форматов, поэтому рабочий процесс редактирования при съемке в формате JPEG выполняется быстрее, не требует больших вычислительных мощностей и может обрабатываться любым программным обеспечением. Если добавить к этому тот факт, что JPEG можно легко снова сжать или преобразовать в другие форматы изображений, становится очевидным, что существует огромное количество инструментов и причин для работы с этим форматом.
Советы по эффективному использованию формата JPEG
Поскольку мы проанализировали преимущества и недостатки JPEG, а также ценные инструменты, с которыми вы можете работать при съемке в этом формате, пришло время рассмотреть несколько советов, которые помогут решить, какой формат это лучший вариант для вас как фотографа.
Прежде всего, мы уже упоминали, что именно вы принимаете все решения, когда дело касается фотографии. Если вы посмотрели на преимущества JPEG и пришли к выводу, что вам нужно снимать фотографии меньшего размера, это правильный путь. С другой стороны, если вам нужна вся информация о цвете, которую вы можете получить от камеры, предпочтительнее снимать в формате RAW.
Чтобы быть более конкретным, некоторые новостные и спортивные фотографы снимают в формате JPEG из-за сжатия формата, что позволяет им делать больше фотографий и использовать режим серийной съемки лучше, чем RAW или TIFF. С другой стороны, фотографы-пейзажисты и портретисты обычно снимают в формате RAW, поскольку в их поле зрения важна каждая мельчайшая деталь.
Еще одна замечательная особенность большинства камер — одновременная съемка в форматах RAW и JPEG. Таким образом, вы сможете манипулировать изображением любым способом и выбирать, какой формат вы предпочитаете использовать в каждом случае. Становится очевидным, что в фотографии, как и в жизни, бывают взлеты и падения, связанные с каждым решением. Таким образом, беспокойтесь не о выборе «правильного формата», а о том, чтобы выбрать подходящий именно вам на конкретной фотосессии.
Наконец, давайте взглянем на несколько дополнительных советов, касающихся вашего рабочего процесса при съемке в формате JPEG:
- При редактировании с компьютера вы предпочитаете сохранять процесс в виде 16-битных файлов TIFF, чтобы избежать потери качества. Когда вы закончите, сохраните окончательную фотографию в формате JPEG.
- Имейте в виду, что такие программы, как Photoshop и Lightroom, допускают дополнительное сжатие перед сохранением изображения и оценкой конечного размера файла.
- Некоторые приложения позволяют исправить цветовой баланс JPEG. Adobe Lightroom и Picverse теперь могут в определенной степени манипулировать этими настройками, но если вы хотите получить полный контроль над своей фотографией, вам следует рассмотреть возможность съемки в формате RAW.
- Снимайте в формате JPEG, если предпочитаете редактирование с телефона или планшета, поскольку для редактирования фотографий в формате RAW требуются более мощные компьютеры.