Скачать 1.57 Mb.
|
Глава 3 Форматы графических файлов В этой главе: • что такое формат графического файла • представление информации в файлах векторных форматов • особенности стандартных векторных форматов • представление информации в файлах растровых форматов • особенности стандартных растровых форматов • сохранение изображений в стандартных и собственных форматах графических редакторов • преобразование форматов файлов Проблема сохранения изображений для последующей их обработки чрезвычайно важна. С ней сталкиваются пользователи любых графических систем. Изображение может быть обработано несколькими программами прежде, чем примет свой окончательный вид. Например, исходная фотография сначала сканируется, затем улучшается ее четкость и производится коррекция цветов в программе Adobe Photoshop. После этого изображение может быть экспортировано в программу рисования, такую как CorelDRAW или Adobe Illustrator, для добавления рисованных картинок. Если изображение создается для статьи в журнале или книги, то оно должно быть импортировано в издательскую систему, например QuarkXPress или Adobe PageMaker. Если же изображение должно появиться в мультимедиа презентации, то оно, вероятнее всего, будет использовано в Microsoft PowerPoint, Macromedia Director или размещено на Web-странице. Формат графического файла — способ представления графических данных на внешнем носителе. Ранее в условиях отсутствия стандартов каждый разработчик изобретал новый формат для собственных приложений. Поэтому возникали большие проблемы обмена данными между различными программами (текстовыми процессорами, издательскими системами, пакетами иллюстративной графики, программами САПР и др.). Но с начала 80-х гг. официальные группы по стандартам начали создавать общие форматы для различных приложений. Единого формата, пригодного для всех приложений, нет и быть не может, но всё же некоторые форматы стали стандартными для целого ряда предметных областей. Пользователю графического редактора не требуется знать, как именно в том или ином формате хранится информация о графических данных. Однако умение разбираться в особенностях форматов имеет большое значение для эффективного хранения изображений и организации обмена данными между различными приложениями. Важно различать векторные и растровые форматы. § 3.1. Векторные форматы Файлы векторных форматов содержат описания рисунков в виде набора команд для построения простейших графических объектов (линий, окружностей, прямоугольников, дуг и т. д.). Кроме того, в этих файлах хранится некоторая дополнительная информация. Различные векторные форматы отличаются набором команд и способом их кодирования. В качестве примера рассмотрим описание простого рисунка в виде последовательности векторных команд. Пусть в вашем распоряжении имеются следующие векторные команды: Установить X, Y — установить в качестве текущей позицию с координатами (X, Y). Линия к XI, Y1 — нарисовать линию от текущей позиции до позиции с координатами (XI, Y1), при этом позиция с координатами (XI, Y1) становится текущей. Линия XI, Yl, X2, Y2 — нарисовать линию с координатами ее начала (XI, У1) и координатами конца (Х2, Y2), при этом текущая позиция не устанавливается. Окружность X, Y, <радиус> — нарисовать окружность, где (X, Y) — координаты центра, <радиус> — радиус в пикселях. Эллипс XI, Yl, X2, Y2 — нарисовать эллипс, ограниченный прямоугольником, где (XI, Y1) — координаты левого верхнего угла этого прямоугольника, а (Х2, Y 2) — правого нижнего угла. Прямоугольник XI, Y1, Х2, Y2 — нарисовать прямоугольник, где (XI, Y 1) — координаты левого верхнего угла этого прямоугольника, а (Х2, Y2) — правого нижнего угла. Цвет рисования <цвет> — установить текущий цвет рисования <цвет>. Цвет закраски <цвет> — установить текущий цвет закраски <цвет>. Закрасить X, Y, <цвет границы> — закрасить произвольную замкнутую фигуру, где (X, Y) — координаты любой точки внутри замкнутой фигуры, <цвет границы> — цвет граничной линии. Требуется описать с помощью векторных команд изображение кораблика. Координаты рисунка задаются в прямоугольной декартовой системе координат, начало которой находится в верхнем левом углу экрана (рис. 3.1). Решение: Цвет рисования голубой Установить 270, 100 Линия к 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, коричневый Особенности некоторых векторных форматов приведены в табл. 3.1. Таблица 3.1 Векторные форматы графических файлов
§ 3.2. Растровые форматы В файлах растровых форматов запоминаются: ■ размер изображения — количество видеопикселей в рисунке по горизонтали и вертикали; ■ битовая глубина — число битов, используемых для хранения цвета одного видеопикселя; ■ данные, описывающие рисунок (цвет каждого видеопикселя рисунка), а также некоторая дополнительная информация. В файлах растровой графики разных форматов эти характеристики хранятся различными способами. Размер изображения хранится в виде отдельной записи. Цвета всех видеопикселей рисунка запоминаются как один большой блок данных. Рассмотрим как сохраняется в растровом файле простое черно-белое изображение (рис. 3.2). Размер изображения = 10 × 10 видеопикселей Рис. 3.2. В растровом файле сохраняется информация о цвете каждого видеопикселя На рис. 3.3 показан результат восстановления изображения по информации, сохраненной в растровом файле, представленном на рис. 3.2. В изображении, восстановленном по файлу, видеопиксели располагаются согласно размеру изображения; а именно, сначала — первая десятка видеопикселей, в следующей строке — вторая десятка и т. д., в десятой строке — последние десять видеопикселей. Рис. 3.3. Растровый рисунок, восстановленный по файлу растровой графики Легко описать векторное представление рис. 3.3: Установить 0, 3 Линия к 3, 0 Линия к 5, 0 Линия к 8, 3 Линия к 8, 5 Линия к 5, 8 Линия к 3, 8 Линия к 0, 5 Линия к 0, 3 Изображения фотографического качества, полученные с помощью сканеров с высокой разрешающей способностью, часто занимают несколько мегабайтов. Например, если размер изображения — 1766 × 1528, а количество используемых цветов — 16 777 216 (т. е. глубина цвета — 24 бита), то объем растрового файла составляет около 8 Мб (информация о цвете видеопикселей в файле занимает 1766 × 1528 × 24 / 8 / 1024 / 1024 Мб). Решением проблемы хранения растровых изображений является сжатие, т. е. уменьшение размера файла за счет изменения способа организации данных. Никому пока не удалось даже приблизиться к созданию идеального алгоритма сжатия. Каждый алгоритм хорошо сжимает только данные вполне определенной структуры. Методы сжатия делятся на две категории: ш сжатие файла с помощью программ-архиваторов; ■ сжатие, алгоритм которого включен в формат файла. В первом случае специальная программа считывает исходный файл, применяет к нему некоторый сжимающий алгоритм (архивирует) и создает новый файл. Выигрыш в размере нового файла может быть значительным. Однако этот файл не может быть использован ни одной программой до тех пор, пока он не будет преобразован в исходное состояние (разархивирован). Поэтому такое сжатие применимо только для длительного хранения и пересылки данных, но для повседневной работы оно неудобно. В системах MS-DOS и Windows наиболее популярными программами сжатия файлов являются ZIP, ARJ, RAR. Если же алгоритм сжатия включен в формат файла, то соответствующие программы чтения правильно интерпретируют сжатые данные. Таким образом, такой вид сжатия очень удобен для постоянной работы с графическими файлами большого размера. Например, пусть в CorelDRAW получен рисунок, который нужно разместить в документе, созданном в программе Adobe Photoshop. TIFF — один из растровых форматов, с которыми может работать Adobe Photoshop. При формировании файла формата TIFF выполняется сжатие графических данных. Именно это обстоятельство учитывается соответствующей программой чтения. Поэтому для достижения поставленной цели можно поступить следующим образом: ■ сохранить рисунок, созданный в CorelDRAW, в файле формата TIFF; ■ импортировать этот файл в программу Adobe Photoshop. Методы сжатия графических данных При сжатии методом RLE (Run—Length Encoding) последовательность повторяющихся величин (величина в нашем случае — набор битов для представления видеопикселя) заменяется парой — повторяющейся величиной и числом ее повторений. Метод сжатия RLE включается в некоторые графические форматы, например в формат PCX. Программа сжатия файла может сначала записывать количество видеопикселей, а затем — их цвет или наоборот. Поэтому возможна такая ситуация, когда программа, считывающая файл, ожидает появления данных в ином порядке, чем программа, сохраняющая этот файл на диске. Если при попытке открыть файл, сжатый методом RLE, появляется сообщение об ошибке или полностью искаженное изображение, нужно попробовать прочитать этот файл с помощью другой программы или преобразовать его в иной формат. Сжатие методом RLE наиболее эффективно для изображений, которые содержат большие области однотонной закраски, и наименее эффективно — для отсканированных фотографий, так как в них может не быть длинных последовательностей одинаковых видеопикселей (рис. 3.4). Метод сжатия LZW основан на поиске повторяющихся узоров в изображении. Сильно насыщенные узорами рисунки могут сжиматься до 0,1 их первоначального размера. Метод сжатия LZW включается в файлы форматов TIFF и GIF; при этом данные формата GIF сжимаются всегда, а в случае формата TIFF право выбора возможности сжатия предоставляется пользователю. Существуют варианты формата TIFF, которые используют другие методы сжатия. Из-за различных схем сжатия некоторые версии формата TIFF могут оказаться несовместимыми друг с другом. Это означает, что возможна ситуация, когда файл в формате TIFF не может быть прочитан в некоторой графической программе, хотя Рис. 3.4. Изображения, хорошо (а) и плохо (б) сжимаемые методом RLE она должна понимать этот формат. Другими словами, не все форматы TIFF одинаковы. Но, несмотря на эту проблему, TIFF является одним из самых популярных растровых форматов в настоящее время. Метод сжатия JPEG обеспечивает высокий коэффициент сжатия (возможно сжатие 100 : 1) для рисунков фотографического качества. Формат файла JPEG, использующий этот метод сжатия, разработан объединенной группой экспертов по фотографии (Joint Photographic Experts Group). Высокий коэффициент сжатия достигается за счет сжатия с потерями, при котором в результирующем файле теряется часть исходной информации. Метод JPEG использует тот факт, что человеческий глаз очень чувствителен к изменению яркости, но изменения цвета он замечает хуже. Поэтому при сжатии этим методом запоминается больше информации о разнице между яркостями видеопикселей и меньше — о разнице между их цветами. Так как вероятность заметить минимальные различия в цвете соседних пикселей мала, изображение после восстановления выглядит почти неизменным. Пользователю предоставляется возможность контролировать уровень потерь, указывая степень сжатия. Благодаря этому, можно выбрать наиболее подходящий режим обработки каждого изображения: возможность задания коэффициента сжатия позволяет сделать выбор между качеством изображения и экономией па- мяти. Если сохраняемое изображение — фотография, предназначенная для высокохудожественного издания, то ни о каких потерях не может быть и речи, так как рисунок должен быть воспроизведен как можно точнее. Если же изображение — фотография, которая будет размещена на поздравительной открытке, то потеря части исходной информации не имеет большого значения. Эксперимент поможет определить наиболее допустимый уровень потерь для каждого изображения. Информация о методах сжатия, используемых в растровых форматах файлов, приведена в табл. 3.2. Таблица 3.2 Растровые форматы графических файлов
§ 3.3. О сохранении изображений в стандартных и собственных форматах графических редакторов Как правило, графические редакторы используют свои собственные форматы для хранения изображений во внешней памяти. Собственный файловый формат — частный и наиболее эффективный формат для хранения файлов отдельного графического приложения. Например, собственный формат CorelDRAW — CDR, Adobe Photoshop — PSD, Fractal Design Painter — RIFF, Paint (стандартная программа Windows) — BMP. Стандартный графический формат — общий формат для различных графических приложений. При сохранении изображения в файле всегда нужно указывать формат. На рис. 3.5 показано диалоговое окно Export (Экспорт), используемое в программе CorelDRAW. Рис. 3.5. Диалоговое окно для сохранения в CorelDRAW изображения в формате JPEG Кроме того, для каждого стандартного графического формата открываются дополнительные диалоговые окна, с помощью которых пользователь устанавливает параметры формата (количество используемых цветов, необходимость сжатия — для BMP и TIFF, коэффициент сжатия — для JPEG и др.). § 3.4. Преобразование файлов из одного формата в другой Необходимость преобразования графических файлов из одного формата в другой может возникнуть по разным причинам: ■ программа, с которой работает пользователь, не воспринимает формат его файла; ■ данные, которые надо передать другому пользователю, должны быть представлены в специальном формате. Преобразование файлов из растрового формата в векторный Существует два способа преобразования файлов из растрового формата в векторный: 1) преобразование растрового файла в растровый объект векторного изображения; 2) трассировка растрового изображения для создания векторного объекта. Первый способ используется в программе CorelDRAW, которая, как правило, успешно импортирует файлы различных растровых форматов. К примеру, если растровая картинка содержит 16 миллионов цветов, CorelDRAW покажет изображение достаточно высокого качества (рис. 3.6). Однако импортированный растровый объект может оказаться довольно большим даже в том случае, если исходный файл невелик, так как векторные форматы не обладают способностью сжатия графических данных. Особенность второго способа преобразования растрового изображения в векторное заключается в следующем. Программа трассировки растровых изображений (например, Рис. 3.6. Результат импорта растрового изображения в документ программы CorelDRAW CorelTRACE) ищет группы пикселей с одинаковым цветом, а затем создает соответствующие им векторные объекты. После трассировки векторизованные рисунки можно редактировать как угодно. На рис. 3.7 показано растровое изображение, которое хорошо преобразуется в векторное, так как имеет четко выраженные границы между группами пикселей одинакового Рис. 3.7. Растровый рисунок с четкими границами, который хорошо преобразуется в векторный формат цвета. В то же время результат трассировки растрового изображения фотографического качества со сложными цветовыми переходами выглядит хуже оригинала (рис. 3.8). Рис. 3.8. Растровое изображение фотографического качества, преобразованное в векторный формат: а — исходное растровое изображение, б — векторное изображение Преобразование файлов одного векторного формата в другой Векторные форматы содержат описания линий, дуг, закрашенных полей, текста и т. д. В различных векторных форматах эти объекты описываются по-разному. Когда программа пытается преобразовать один векторный формат в другой, она действует подобно обычному переводчику, а именно: 1) считывает описания объектов на одном векторном языке, 2) пытается перевести их на язык нового формата. Если программа-переводчик считает описание объекта, для которого в новом формате нет точного соответствия, этот объект может быть либо описан похожими командами нового языка, либо не описан вообще. Таким образом, неко- торые части рисунка могут исказиться или исчезнуть. Все зависит от сложности исходного изображения. На рис. 3.9 представлен один из возможных результатов преобразования файла из одного векторного формата в другой. Исходное изображение создано в программе CorelDRAW и состоит из следующих элементов: рисунок «Закат солнца», содержащий несколько цветовых переходов, рамка вокруг рисунка, текст, прямоугольник с конической заливкой. При преобразовании рис. 3.9, а в формат CGM или WMF сохраняются все исходные элементы. Формат же DXF исказил заливку из нескольких цветовых переходов, форму рамки, коническую заливку, а также изменил шрифт (рис. 3.9, б). Дело в том, что этот формат предназначен для конструкторских разработок, поэтому в нем отсутствуют команды для описания различных художественных эффектов. Рис. 3.9. Результаты преобразования одного векторного формата в другой: а — исходное изображение в векторном формате CDR, б — результат преобразования в векторный формат DXF Преобразование файлов из векторного формата в растровый Преобразование изображений из векторного формата в растровый — в набор пикселей (этот процесс часто называют растрированием векторного изображения) встречается очень часто. Прежде, чем разместить рисованную (векторную) картинку на фотографии, ее необходимо экспортировать в растровый формат. Например, изображение окна на рис. 3.10 было отсканировано и сохранено в файле формата JPEG. Рисунок утенка создан в редакторе векторной графики CorelDRAW и затем экспортирован в файл формата TIFF. Монтаж двух растровых изображений выполнен в редакторе растровой графики Adobe Photoshop. Рис. 3.10. Рисованная картинка, вставленная в фотографию Каждый раз, когда векторный рисунок направляется на устройство вывода (например, монитор или принтер), он подвергается растрированию — преобразованию в набор видеопикселей или точек. При экспорте векторных файлов в растровый формат может быть потеряна информация, связанная с цветом исходного изображения. Это объясняется тем, что в ряде растровых форматов количество цветов ограничено (например, формат GIF использует не более 256 цветов). Преобразование файлов одного растрового формата в другой Этот вид преобразования обычно самый простой и заключается в чтении информации из исходного файла и записи ее в новый файл, где данные о размере изображения, битовой глубине и цвете каждого видеопикселя хранятся другим способом. Если старый формат использует больше цветов, чем новый, то возможна потеря информации. Преобразование файла с 24-битовой глубиной цвета (16 777 216 цветов) в файл с 8-битовой глубиной цвета (256 цветов) требует изменения цвета почти каждого пикселя. В простейшем случае это делается так: для каждого пикселя исходного файла ищется наиболее близкий к нему цвет из нового ограниченного набора цветов. При таком способе возможны нежелательные эффекты, когда часть рисунка, содержащая большое количество элементов, оказывается закрашенной одним цветом или когда плавные переходы цвета становятся резкими. На рис. 3.11 (рис. IX на цветной вклейке) показано, к каким результатам может привести уменьшение количества цветов изображения. Для преобразования файлов из одного формата в другой используются специальные программы — преобразователи (конверторы) форматов. Однако большинство графических редакторов (CorelDRAW, Adobe Illustrator, Adobe Photoshop и др.) могут читать и создавать файлы различных форматов, т. е. содержат в себе преобразователи форматов. Рис. 3.11. Появление дефектов в изображении при уменьшении количества цветов: а — исходное изображение, б — результат преобразования в новый формат с меньшим количеством цветов Коротко о главном 1. Формат графического файла — способ представления графических данных на внешнем носителе. 2. Файлы векторного формата содержат описания рисунков в виде набора команд для построения простейших графических объектов (линий, окружностей, прямоугольников, дуг и т. д.). 3. В файлах растрового формата запоминается размер изображения, битовая глубина, а также цвет каждого видеопикселя рисунка. 4. Сжатие графических данных — уменьшение размера файла за счет изменения способа организации данных. Различные алгоритмы сжатия используются для файлов растрового формата. 5. Собственный файловый формат — частный и наиболее эффективный формат для хранения файлов отдельного графического приложения. Например, собственный формат CorelDRAW — CDR, Adobe Photoshop — PSD. 6. Стандартный графический формат — общий формат для различных графических приложений. 7. Стандартные векторные форматы — WMF, EPS, DXF, CGM и др. 8. Стандартные растровые форматы — BMP, PCX, GIF, TIFF, TGA, IMG, JPEG и др. 9. Способы преобразования файлов из растрового формата в векторный: • преобразование растрового файла в растровый объект векторного изображения; • трассировка растрового изображения для создания векторного объекта. 10. Программа преобразования одного векторного формата в другой действует подобно обычному переводчику, а именно: 1) считывает описания объектов на одном векторном языке, 2) пытается перевести их на язык нового формата. 11. Программа преобразования одного растрового формата в другой считывает из исходного файла данные о размере изображения, битовой глубине, а также цвете каждого видеопикселя и записывает эту же информацию в новый файл другим способом. Контрольные вопросы 1. Что означает термин «формат графического файла»? 2. Почему необходимо иметь общие форматы для различных приложений? 3. Как хранится изображение в файле векторного формата? 4. Какие вы знаете векторные форматы? 5. Какая информация запоминается в растровом файле? 6. Как можно уменьшить размер растрового файла? 7. Какие методы сжатия графических данных вам известны? 8. Какие форматы используются для хранения фотографий? 9. Когда возникает необходимость в преобразовании форматов файлов? 10. Какие способы преобразования растрового формата в векторный вам известны? 11. Почему при преобразовании одного векторного формата в другой некоторые части изображения могут исказиться или вообще исчезнуть? 12. Каковы особенности преобразования одного растрового формата в другой растровый формат? Часть 2 Редакторы векторной и растровой графики |