Алгоритм сжатия файлов формата tiff и gif

Обновлено: 07.07.2024

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

Алгоритмы сжатия без потерь

В качестве примеров таких алгоритмов сжатия без потерь можно рассмотреть следующие:

Ø кодирование длин серий;

Кодирование длин серий (Run Length Encoding )

Как известно, все документы (графика, тексты, программы и т. п.) хранятся в компьютере в виде файлов — организованных записей. Изображения хранятся в файлах специальных графических форматов, которых сейчас насчитывается более десятка. Основой для разложения изображения на множество элементов является пиксель. Основа файла — это описание цветов всех пикселей. Описание цвета пикселя (три / четыре числа) является кодом цвета в соответствии с той или иной цветовой моделью. Указание на цветовую модель также включается в файл. Кроме того, записывается размер изображения в пикселях.

Итак, условная структура файла (аналог формата BMP), будет содержать: сведения о цветовой модели; габаритах изображения; и, например, об авторе картинки, включенные в специальный раздел файла, называемый заголовком . После заголовка в файле записываются друг за другом коды цветов (или параметров цветовой модели) отдельных пикселей, слева направо и сверху вниз.

Пиксельное изображение при сохранении фактически вытягивается в цепочку и логично предположить, что встречаются цепочки (последовательности) одинаковых байтов. Самым простым способом, который позволяет уменьшить объем файла, является поиск повторяющихся кодов (символов, цвета и т. п.) — серий одинаковых значений. Каждая такая серия фиксируется двумя числами: первое указывает количество одинаковых значений, а второе — само значение.

Заменим для простоты значения цвета буквами. Если в документе, скажем, имеется такая последовательность "АААААВВВВВВВСССССС", ее можно сжать таким образом: 5А7В6С. В результате вместо 18 символов в документе достаточно хранить всего 6.

Алгоритм рассчитан на деловую или декоративную графику — изображения с большими областями локального (повторяющегося) цвета.

Достоинством такого алгоритма является простота (что очень важно, т. к. позволяет выполнять процедуры компрессии и декомпрессии достаточно быстро), а недостатками — необходимость различать собственно данные и числа повторений, а также возможное увеличение объема файла, если в документе мало повторений (например, серия АВСАВС не уменьшит, а увеличит объем документа, поскольку будет иметь следующий вид: 1А1В1С1А1В1С, т. е. вместо 6 символов получится вдвое больше).

Если система выводит ошибку, возможно программа, считывающая файл ожидает появление данных в ином порядке, чем программа, сохраняющая этот файл на диске. Требуется преобразование в иной формат

Метод RLE включается в некоторые графические форматы, например:

Ø BMP (для 16 и 256 по желанию);

Алгоритм Хаффмана

Алгоритм Хаффмана основан на определенном анализе документа и вычислении частоты встречаемости цветовых значений (или значений других видов информации), а затем этим значениям в соответствии с рангом присваиваются коды сначала с минимальным количеством битов, а затем по мере снижения частоты (уменьшения ранга) используется все большее количество двоичных разрядов. Такой способ кодирования иногда называют алфавитным кодированием.

Заменим также для простоты значения цвета буквами. Например, в следующей последовательности букв ААСАААВАВАВВАВСАСВСАСААССС заметно, что чаще всего встречается символ А (12 раз), затем символ С (9 раз) и, наконец, символ В (5 раз). Следовательно, символ А можно заменять кодом 0, символ С — кодом 1, а символ В — кодом 00. И так далее, если элементов для кодирования больше. В результате, если считать, что каждый символ в нашем примере кодируется 1 битом, то для передачи строки потребуется 208 битов, а в сжатом виде объем информации составит только 31 бит.

Алгоритм LZW

Алгоритм, названный в честь своих создателей Лемпеля, Зива и Велча (Lempel, Ziv и Welch), не требует вычисления вероятностей встречаемости символов или кодов. Основная идея состоит в замене совокупности байтов в исходном файле ссылкой на предыдущее появление той же совокупности.

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

Например, если сжимают байтовые данные (текст), то строк в таблице окажется 256 (от "0" до "255"). Для кода очистки и кода конца информации используются коды 256 и 257. Если используется 10-битный код, то под коды для строк остаются значения в диапазоне от 258 до 1023. Новые строки формируют таблицу последовательно, т. е. можно считать индекс строки ее кодом.

Пусть сжимается последовательность символов АВВСВВВ. Сначала в сжатый документ сохраняется код удаления [256], затем считывается символ "А" и проверяется, существует ли в таблице строка "А". Поскольку при инициализации в таблицу сохраняются все строки длиной в один символ, то строка "А", конечно, существует в таблице.

Далее считывается следующий символ "В" и проверяется, существует ли в таблице строка "АВ". Такая строка в таблице пока отсутствует, поэтому с первым свободным кодом [258] в таблицу вносится строка "АВ", а в документе сохраняется код [А]. Последовательность "АВ" в таблице отсутствует, поэтому в таблицу добавляется код [258] для сочетания "АВ", а в документе сохраняется код [А].

Далее рассматривается последовательность "ВВ", которая отсутствует в таблице, в таблицу заносится код [259] для символов "ВВ", а в документе сохраняется код [В].

Считывается символ "С" и проверяется наличие символов "ВС" в таблице, поскольку такая последовательность отсутствует, то в таблицу заносится кед [260] для последовательности "ВС", а в документ — код [В].

Снова добавляется из исходного файла символ "В" и теперь уже проверяется сочетание "СВ", которое тоже отсутствует. В таблицу записывается код [261] для "СВ", а в документ — код [С].

Затем считывается символ "В" и строка "ВВ", наконец, имеется в таблице, поэтому считывается следующий символ и рассматривается последовательность "ВВВ", которая, конечно, в таблице отсутствует. В таблицу заносится код [262] для "ВВВ", а в документ (внимание!) — код [259].

В результате в документе окажется следующая последовательность кодов [256][А][В][В][С][259], что короче исходной последовательности. К сожалению, последовательность слишком короткая, а алгоритм достатчно сложен, чтобы выгода оказалась реальной. При значительном объеме коэффициент сжатия может достигать несколько сот единиц.

Особенностью рассматриваемого алгоритма LZW является то, что для выполнения обратного процесса ("распаковки") нет необходимости сохранять таблицу в документе (алгоритм позволяет восстановить таблицу строк только из сохраненных в документе кодов).

Этот метод гораздо совершеннее RLE для областей с переходами цветов, однако кодировка в него требует больше системных ресурсов.

Метод LZW включается в некоторые графические форматы, например: TIFF ; GIF .

Алгоритмы сжатия с потерями

JPEG (Joint Photographic Experts Group)

Исследователями визуального восприятия человека отмечено, что далеко не вся информация требуется для того, чтобы адекватно воспринимать цветное изображение. Для реализации этого закона были разработаны алгоритмы с потерей информации, которые обеспечивают выбор уровня компрессии с уровнем качества изображения (рис. 1). Тем самым достигается компромисс между размером и качеством изображений.

Наиболее известным методом компрессии с потерями является JPEG-компрессия. Метод компрессии основан на особенности человеческого восприятия: глаз достаточно четко различает яркость объекта и цветовые контрасты, а плавные изменения в светах и тенях значительно меньше. При записи такой изобразительной информации часть цветовых данных может быть опущена, как предполагается, без заметного ущерба для восприятия.

Рис. 1. Компромисс между качеством и уровнем компрессии

Для этого обработка изображения происходит в несколько этапов. Сначала изображение конвертируется в особое цветовое пространство, напоминающее цветовую модель CIE Lab, в котором один канал сохраняет яркостные характеристики, а в остальных двух цветовых каналах уменьшается разрешение (по методу мозаики).

Замечание: RGB-изображение конвертируется в пространство YUV (иногда называемое также YcrCb), основанное на характеристиках яркости (составляющая Y) и цветности (составляющие U и V).

Затем изображение разбивается на фрагменты квадратной формы со стороной в 8 пикселей. Каждый фрагмент подвергается достаточно сложным математическим преобразованиям. Записывается два типа информации — усредненная информация о блоке и информация о его деталях, далее, в зависимости от выбранной степени сжатия, удаляется то или иное количество дополнительной информации. Чем меньше будет размер файла, тем хуже будет его качество.

Одновременно каждый блок разлагается на составляющие цвета и производится подсчет частоты встречаемости каждого цвета. Информация о частоте позволяет исключить небольшую часть яркостной характеристики и довольно значительную цветовой. Уровень исключения информации как раз и определяется установкой требуемого качества.

Затем информация о яркости и цвете кодируется таким образом, что остаются только различия между соседними блоками. Результатом всего процесса обработки являются последовательности простых чисел, которые в свою очередь легко сжимать каким-либо алгоритмом сжатия без потерь из уже упомянутых, например алгоритмом Хаффмана.

Алгоритмы сжатия с потерями, в частности алгоритм JPEG, не позволяют полностью восстановить изображение до его исходного состояния, а, следовательно, не рекомендуется сжимать изображения несколько раз.

Размещение сквозной ссылки

Методы компрессии и сжатия изображений

Графические данные, особенно данные растровых файлов, занимают колоссальное количество дискового пространства. Например, растровое изображение формата А4 в цветовой модели CMYK при разрешении 300 точек на дюйм занимает порядка 30 мегабайт дискового пространства. Хорошо, если файл один, и ваша публикация не использует других изображений (что крайне маловероятно). Ситуация в корне изменяется тогда, когда вы создаете некий шедевр, например, галерею репродукций картин А2 формата, при этом она с трудом умещается на 100 листах, запечатанных с двух сторон. При самых скромных подсчетах (120 мегабайт х 100 листов х 2 стороны у каждого листа), растровые изображения в этом формате при таком количестве листов будут занимать порядка 24 гигабайт дискового пространства. На чем вы собираетесь хранить такую публикацию ? А теперь представьте, что у вас несколько заказчиков, и работы каждого из них хранятся в нескольких вариантах оформления, кроме того, для большинства заказов вы сохранили выполненный проект на разных стадиях его готовности, чтобы в случае желания заказчика все в корне и кардинально изменить, вы могли быстро это выполнить. Естественно, все эти данные сохранить будет очень и очень сложно. Именно поэтому, а также потому, что дисковое пространство обычно достаточно дорого обходится (хотя устройства для хранения цифровой информации постоянно дешевеют, их все время требуется больше и больше, что требует немалых капиталовложений), были изобретены множество методов сжатия данных самого различного типа, в том числе и графических. О наиболее распространенных и широко использующихся мы сейчас поговорим.

В самом начале разделим существующие методы сжатия изображений на две условные категории - на архивацию (сжатие), и на компрессию (конвертирование). Разница между этими способами в том, что второй не подразумевает полного восстановления исходного сохраненного изображения в полном качестве. Но каким бы не был алгоритм компрессии данных, для работы с ним файл нужно проанализировать и распаковать, т. е. вернуть данные в исходный незапакованный вид для их быстрой обработки (обычно это происходит прозрачно для пользователя). Ниже мы рассмотрим способы сжатия подробнее.

Архивация, или сжатие графических данных, возможно как для растровой, так и для векторной графики. При этом способе уменьшения данных, программа анализирует наличие в сжимаемых данных некоторых одинаковых последовательностей данных, и исключает их, записывая вместо повторяющегося фрагмента ссылку на предыдущий такой же (для последующего восстановления). Такими одинаковыми последовательностями могут быть пикселы одного цвета, повторяющиеся текстовые данные, или некая избыточная информация, которая в рамках данного массива данных повторяется несколько раз. Например, растровый файл, состоящий из подложки строго одного цвета (например, серого), имеет в своей структуре очень много повторяющихся фрагментов.

Компрессия (конвертирование) данных - это способ сохранения данных таким образом, при использовании которого не гарантируется (хотя иногда возможно) полное восстановление исходных графических данных. При таком способе хранения данных обычно графическая информация немного "портится" по сравнению с оригинальной, но этими искажениями можно управлять, и при их небольшом значении ими вполне можно пренебречь. Обычно файлы, сохраненные с использованием этого способа хранения, занимают значительно меньше дискового пространства, чем файлы, сохраненные с использованием простой аривации (сжатия). Сильная степень компрессии при использовании второго способа сжатия и дает этому способу хранения данных право на существование (в противном случае, все поголовно использовали бы сжатие без потерь). Как правило, при сохранении данных с использованием компрессии, имеется возможность компромисса между размером выходного файла и его качеством. Понятно, что возможна оптимизация только по одному параметру (чем меньше качество, тем меньше объем выходного файла, и наоборот).

Ниже будут рассмотрены некоторые алгоритмы сжатия данных, их достоинства и недостатки, а также оптимальная их сфера применения (т. е. те типы изображений, к которым данный метод сжатия лучше применять).

Вначале рассмотрим несколько алгоритмов сжатия данных, которые не вносят изменения в исходные файлы и гарантируют полное восстановление данных.

RLE (Run - length encoding) - метод сжатия данных, при котором одинаковые последовательности одних и тех же байт заменяются однократным упоминанием повторяющегося байта (или целой цепочки байтов), и числа его повторений в исходных данных. Например, строка типа 0100 0100 0100 0100 0100 0100 0100 0100, описывающая некую группу пикселов будет заменена на запись типа 0100 х 8, и т.д. Применяется этот тип сжатия в тех случаях, когда изображение имеет большие участки одинакового цвета, цифровое представление которых идентично. В основном, этот тип сжатия применим для монохромных изображний, сохраненных в цветовой модели Bitmap, где при сжатии данных с его использованием можно добиться наилучших результатов. Для сжатия других типов данных (в том числе, и не графических) алгоритм применим, но малоэффективен, так как сжимаемые данные должны иметь простую повторяющуюся структуру). Этот алгоритм имеет еще одно важное преимущество, заключающееся в его относительной простоте, что позволяет быстро производить распаковку из этого формата и упаковку в этот формат (как вы помните, все графические данные для их обработки должны быть предварительно распакованы, а любая компрессия или архивация применяется, в основном, для временного или постоянного хранения файла). В принципе, на основе этого несложного алгоритма, работают более совершенные и более сложные (а также менее быстрые) методы упаковки графических данных, которые мы рассмотрим ниже. Этот метод сжатия графических фанных испольуется в файлах формата PSD, BMP и других.

CCITT Group 3, CCITT Group 4 - Два похожих метода упаковки графических данных, работающие с однобитными изображениями, сохраненными в цветовой модели Bitmap. Основаны на поиске и исключении из исходного изображения дублирующихся последовательностей данных (как в предыдущем типе сжатия, RLE). Различием является лишь то, что эти алгоритмы ориентированы на упаковку именно растровой графической информации, так как работают с отдельными рядами пикселов в изображении. Изначально алгоритм был разработан для сжатия данных, передаваемых через факсимильные системы связи (CCITT Group 3), а более совершенная разновидность этого метода архивации данных (CCITT Group 4) подходит для записи монохромных изображений с высокой степенью сжатия. Как и предыдущий алгоритм, он, в основном, подходит для сжатия изображений с большими одноцветными областями. Его достоинством является скорость выполнения, а недостатком - ограниченность применения для компрессии графических данных (не все данные удается таким образом эффективно упаковать). Этот метод сжатия графических фанных испольуется в файлах формата PDF, PostScript и других.

LZW (Lemple-Zif-Welch) - алгоритм архивации, основанный на поиске и замене в исходном файле одинаковых последовательностей данных, для их исключения, и уменьшения размера архива. В отличие от предыдущих рассмотреных методов сжатия, в данном случае производится более интеллектуальный просмотр сжимаемого одержимого, для большей степени сжатия данных. Данный тип компрессии не вносит искажений в исходный графический файл, и подходит для сжатия растровых данных любого типа - монохромных, черно - белых, или полноцветных. Наилучшие результаты получаются при компрессии изображений с большими областями одинакового цвета или изображений с повторяющимися одинаковыми структурами. Этот метод позволяет достичь одну из наилучших степеней сжатия среди других существующих методов сжатия графических данных, при полном отсутствии потерь или искажений в исходных файлах. Этот метод сжатия графических фанных испольуется в файлах формата TIFF, PDF, GIF, PostScript и других.

ZIP - метод сжатия данных, аналогичный методу, использованному в популярном алгоритме архивации PKZip. В основу метода сжатия положен метод, аналогичный LZW. Как и предыдущий метод сжатия данных, этот способ не вносит искажений в исходный файл, и лучше всего подходит для компрессии графических данных с одинаковыми одноцветными или повторяющимися областями. Этот метод сжатия графических фанных испольуется в файлах формата PDF, TIFF и некоторых других.

А теперь рассмотрим алгоритмы и методы сжатия данных, которые вносят изменения в исходные файлы, показывая при этом более высокую степень упаковки графических изображений.

JPEG (Joint Photographic Experts Group) - метод, используемый для хранения полутоновых и полноцветных изображений, позволяющий добиться наивысшей степени сжатия и минимальный размер выходного файла. Основан алгоритм на особенностях восприятия человеческим глазом различных цветов, и достаточно громоздок с вычислительной точки зрения, так как занимает много процессорного времени. Происходит кодирование файла в несколько этапов. Во-первых, изображение условно разбивается на несколько цветовых каналов, для дальнейшего анализа. Затем, изображение разбивается на группы, по 64 пиксела в каждой группе, которые представляют из себя квадратные участки изображения размером 8х8 пикселов, для дальнейшей обработки. Затем, цвет пикселов специальным образом кодируется, исключается дублирующая и избыточная информация, причем при описании цвета большее внимание уделяется скорее яркостной, чем цветовой составляющей, так как человеческий глаз воспринимает больше изменения яркости, чем конкретного цветового тона. Полученные данные сжимаются по RLE или LZW - алгоритму, для получения еще большей компрессии. В результате, на выходе мы получаем файл, иногда в десятки раз меньший, чем его несжатый аналог. Однако, чем меньше размер выходного файла, тем меньше степень аккуратности при работе программы - конвертора, и, соответственно, ниже качество выходного изображения. Обычно, в программах, позволяющих сохранять растровые данные, возможно задание некоего компромисса между объемом выходного файла и качеством изображения. При наивысшем качестве, обхем выходного файла в 3-5 раз меньше исходного незапакованного. При наименьшем - меньше исходника в десятки раз, но, как правило, при этом качество изображения не позволяет его где-либо использовать. Как правило, для сохранения достойного уровня качества, используют наивысшую из доступных степень качества. Данный формат предназначен для хранения, в основном, фотографических изображений с большим количеством оттенков и цветовых переходов, и практически не подходит для хранения однотонных изображений типа кадров из мультфильмов (сжатие будет слишком низким, или качество картинки окажется просто неприлично низким). Этот метод сжатия графических фанных испольуется в файлах формата PDF, PostScript, собственно, JPEG и других.

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

Кроме того, в качестве вспомогательных средств, которые могут использоваться для понижения объемов файлов можно рассмотреть изменение цветовой модели графического файла, изменение разрешения растрового файла и ресемплирование (изменение глубины цвета пикселов).

Изменение цветовой модели файла. Например, файлы в цветовом пространстве CMYK больше аналогичных файлов в пространстве RGB на 33% (так как в CMYK появляется дополнительный четвертый черный канал). Если вы не планируете печать ваших файлов, или уверенны в том, что вы сможете корректно провести цветоделение (переход в субтрактивную модель CMYK) позже, вы можете хранить рабочие файлы в RGB. Однако, некоторые данные при переходе из одной цветовой модели в другую, безвозвратно теряются, так что будьте внимательны.

Изменение разрешения растрового файла

Файл с разрешением 600 точек на дюйм больше своего аналога разрешением в 300 точек в четыре раза, а качество печати при повышенном разрешении не всегда будет выше, нем при номинальном его значении. Так что если разрешение избыточно, можете его понизить. Понижение разрешения растрового файла - необратимый процесс, и никакя интерполяция потом потерянные пикселы не восстановит. Так что при задании необходимого разрешения также будьте внимательны и рациональны. Следует учесть, что параметр разрешения контуров применительно к векторной графике не имеет отношения к объему выходного файла (это уже несколько другое разрешение и несколько другое понятие), а влияет на аккуратность "прорисовки" вектора при его растеризации в устройстве, где производится печать. Так что уменьшение этого параметра для векторной графики не уменьшит объем ваших файлов, а только ухудшит качество печати.

Ресемплирование (изменение глубины цвета растрового изображения) - это изменение начальной глубины цвета файла. Некоторые оцифровывающие устройства выдают растровую информацию с глубиной цвета, превышающую достаточное для печати значение 8 бит на канал. Это иногда оправдано, так как большее значение бит на канал позволяет задавать большее число градаций цвета, что требуется, например, при сильной, "кардинальной" цветокоррекции - сильном осветлении или затенении отдельных участков. Однако, в большинстве случаев для хранения растровых данных в различных цветовых моделях с лихвой достаточно глубины цвета 8 бит на канал. Кроме того, один из стандартов JPEG - сжатия для RGB изображений подразумевает использование разного количества бит для разных цветовых составляющих (наименьшее количество бит используется для зеленого канала, так как человеческий глаз различает в нем минимальное число оттенков). Также большинство фильтров Adobe Photoshop рассчитано на работу с изображениями с глубиной цвета именно 8 бит (с изображением, использующим нестандартную глубину цвета, становится практически невозможно работать, так как большинство фильтров рассчитаны на значение глубины цвета в 8 бит).

Хорошим примером настройки опций сжатия растровой и векторной графики является диалоговое окно Job Options - Compression из пакета Adobe Acrobat Distiller, опции которого рассмотрены ниже.
Рис. 1. Диалоговое окно Adobe Acrobat Distiller

Форматы графических файлов можно разбить на 2 большие группы: универсальные и специализированные.

Форматы первого типа используют для хранения графических данных и обмена между ими между различными программами.

Форматы второй группы используют для хранения изображений.

Форматы графических файлов определяют способ хранения информации в файле (растровый или векторный), а также форму хранения информации (используемый алгоритм сжатия).

Графические данные, как привило имеют большой объем и требуют много места на диске. В связи с этим используют различные методы сжатия графической информации.

Сжатие применяется для растровых графических файлов, так как они имеют обычно достаточно большой объем. При сжатии графических файлов алгоритм сжатия включается в формат графического файла.

Существуют различные алгоритмы сжатия, причем для различных типов изображения целесообразно применять подходящие типы алгоритмов сжатия.

Для сжатия рисунков типа аппликации, содержащих большие области однотонной закраски, наиболее эффективно применение алгоритма сжатия, который заменяет последовательность повторяющихся величин (пикселей одинакового цвета) на две величины (пиксель и количество его повторений). Такой алгоритм сжатия используется в графических файлах форматов BMP и PCX.

Для рисунков типа диаграммы целесообразно применение другого метода сжатия, который использует поиск повторяющихся в рисунке «узоров». Такой алгоритм используется в графических файлах форматов TIFF и GIF и позволяет сжать файл в несколько раз.

Для сжатия отсканированных фотографий и иллюстраций используется алгоритм сжатия JPEG. Этот алгоритм использует тот факт, что человеческий глаз очень чувствителен к изменению яркости отдельных точек изображения, но гораздо хуже замечает изменение цвета. Действительно, при глубине цвета 24 бита компьютер обеспечивает воспроизведение более 16 млн. различных цветов, тогда как человек вряд ли способен различить и тем более назвать более сотни цветов и оттенков.

Применение метода JPEG позволяет сжимать файлы в десятки раз, однако может приводить к необратимой потере информации (файлы не могут быть восстановлены в первоначальном виде).

Некоторые форматы графических файлов являются универсальными, так как могут быть обработаны большинством графических редакторов. Некоторые программы обработки изображений используют оригинальные форматы, которые распознаются только самой создающей программой. Преимущество оригинальных форматов файлов состоит в том, что они позволяют сохранять изображения при меньшем размере файла.

Рассмотрим некоторые форматы графических файлов более подробно.

Bit MaP image (BMP) — универсальный формат растровых графических файлов, используется в операционной системе Windows. Этот формат поддерживается многими графическими редакторами, в том числе редактором Paint. Рекомендуется для хранения и обмена данными с другими приложениями.

Tagged Image File Format (TIFF) — формат растровых графических файлов, поддерживается всеми основными графическими редакторами и компьютерными платформами. Включает в себя алгоритм сжатия без потерь информации. Используется для обмена документами между различными программами. Рекомендуется для использования при работе с издательскими системами.

Graphics Interchange Format (GIF) — формат растровых графических файлов, поддерживается приложениями для различных операционных систем. Включает алгоритм сжатия без потерь информации, позволяющий уменьшить объем файла в несколько раз. Рекомендуется для хранения изображений, создаваемых программным путем (диаграмм, графиков и так далее) и рисунков (типа аппликации) с ограниченным количеством цветов (до 256). Используется для размещения графических изображений на Web-страницах в Интернете.

Portable Network Graphic (PNG) — формат растровых графических файлов, аналогичный формату GIF. Рекомендуется для размещения графических изображений на Web-страницах в Интернете.

Joint Photographic Expert Group (JPEG) — формат растровых графических файлов, который реализует эффективный алгоритм сжатия (метод JPEG) для отсканированных фотографий и иллюстраций. Алгоритм сжатия позволяет уменьшить объем файла в десятки раз, однако приводит к необратимой потере части информации. Поддерживается приложениями для различных операционных систем. Используется для размещения графических изображений на Web-страницах в Интернете.

Windows MetaFile (WMF) — универсальный формат векторных графических файлов для Windows-приложений. Используется для хранения коллекции графических изображений Microsoft Clip Gallery.

Encapsulated PostScript (EPS) — формат векторных графических файлов, поддерживается программами для различных операционных систем. Рекомендуется для печати и создания иллюстраций в настольных издательских системах.

CorelDRaw files (CDR) — оригинальный формат векторных графических файлов, используемый в системе обработки векторной графики CorelDraw.

Если вы собираетесь работать с графическим файлом только в одном данном приложении, целесообразно выбрать оригинальный формат. Если же предстоит передавать данные в другое приложение, другую среду или иному пользователю, стоит использовать универсальный формат.

Существует множество программ-трансляторов, переводящих данные из векторного формата в растровый. Как правило, такая задача решается довольно просто, чего нельзя сказать об обратной операции - преобразовании растрового файла в векторный и даже о переводе одного векторного файла в другой. Векторные алгоритмы записи используют уникальные для каждой фирмы-поставщика математические модели, описывающие элементы изображения.

Практическая работа. Сохранение изображения в различных форматах с помощью растрового редактора

В этом разделе:

      • что такое формат графического файла;
      • хранение информации в файлах векторных форматов;
      • особенности стандартных векторных форматов;
      • представление информации в файлах растровых форматов;
      • особенности стандартных растровых форматов;
      • сохранение изображений в собственных и «чужих» форматах графических программ;
      • преобразование форматов файлов.

      Проблема сохранения изображений для последующей их обработки чрезвычайно важна. С ней сталкиваются пользователи любых графических систем. Изображение может быть обработано несколькими графическими программами прежде, чем примет свой окончательный вид. Например, исходная фотография сначала сканируется, затем улучшается её чёткость и производится коррекция цветов в программе Adobe PhotoShop . После этого изображение может быть экспортировано в программу рисования, такую как CorelDRAW или Adobe Illustrator, для добавления рисованных картинок. Если изображение создаётся для статьи в журнале или книги, то оно должно быть импортировано в издательскую систему QuarkXPress или Adobe PageMaker. Если же изображение должно появиться в мультимедиа-презентации, то оно, вероятнее всего, будет использовано в Microsoft PowerPoint, Macromedia Director или размещено на Web-странице.

      Формат графического файла способ представления и расположения графических данных на внешнем носителе.

      В условиях отсутствия стандартов каждый разработчик изобретал новый формат для собственных приложений. Поэтому возникали большие проблемы обмена данными между различными программами (текстовыми процессорами, издательскими системами, пакетами иллюстративной графики, программами САПР и др.). Но с начала 80-х гг. официальные группы по стандартам начали создавать общие форматы для различных приложений. Единого формата, пригодного для всех приложений, нет и быть не может, но всё же некоторые форматы стали стандартными для целого ряда предметных областей.

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

      Важно различать векторные и растровые форматы.

      Векторные форматы

      Файлы векторного формата содержат описания рисунков в виде набора команд для построения простейших графических объектов (линий, окружностей, прямоугольников, дуг и т. д.). Кроме того, в этих файлах хранится некоторая дополнительная информация. Различные векторные форматы отличаются набором команд и способом их кодирования.

      В качестве примера рассмотрим описание простого рисунка в виде последовательности векторных команд. Пусть в вашем распоряжении имеются следующие векторные команды:

      Установить X, Y — установить в качестве текущей позицию ( X, Y ).

      Линия к X I, Y 1 — нарисовать линию от текущей позиции до позиции ( X I, Y 1), при этом позиция ( X I, Y 1) становится текущей.

      Линия X I, Y l, X 2, Y 2 — нарисовать линию с координатами её начала ( X I, Y 1) и координатами конца (Х 2 , Y 2), при этом текущая позиция не устанавливается.

      Окружность X, Y, <радиус> — нарисовать окружность, где ( X, Y ) — координаты центра, <радиус> — радиус в пикселях.

      Эллипс X 1, Y 1, X 2, Y 2 — нарисовать эллипс, ограниченный прямоугольником, где (X I, Y 1) — координаты левого верхнего угла этого прямоугольника, a (X 2, Y 2) — правого нижнего.

      Прямоугольник X 1, Y 1, X 2, Y 2 — нарисовать прямоугольник, где ( X I , Y 1) — координаты левого верхнего угла этого прямоугольника, а (Х 2, Y 2) — правого нижнего.

      Цвет рисования <цвет> — установить текущий цвет рисования <цвет>.

      Цвет закраски <цвет> — установить текущий цвет закраски <цвет>.

      Закрасить X, Y, <цвет границы> — закрасить произвольную замкнутую фигуру, где (X, Y) — координаты любой точки внутри замкнутой фигуры, <цвет границы> — цвет граничной линии.

      Требуется описать с помощью векторных команд изображение кораблика.

      Координаты рисунка задаются в прямоугольной декартовой системе координат, начало которой находится в верхнем левом углу.

      Решение:

      Цвет рисования Голубой

      Установить 270 ,1 00

      Линия к 440, 100

      Линия к 400, 140

      Линия к 310, 140

      Линия к 270, 100

      Цвет закраски Голубой

      Закрасить 320, 130, Голубой

      Цвет рисования Белый

      Цвет закраски Белый

      Окружность 310, 120, 5

      Закрасить 310,120, Белый

      Окружность 350, 120, 5

      Закрасить 350,120, Белый

      Окружность 400,120, 5

      Закрасить 400,120, Белый

      Цвет рисования Синий

      Цвет закраски Красный

      Установить 300,100

      Линия к 340, 20

      Линия к 340,100

      Линия к 300,100

      Закрасить 320,90, Синий

      Цвет рисования Коричневый

      Установить 340, 20

      Линия к 340,100

      Линия к 400, 100

      Линия к 340,20

      Цвет закраски Белый

      Закрасить 390, 90, Коричневый

      Читайте также: