1 / 53

Форматы графических файлов

Форматы графических файлов. Существует огромное количество графических приложений В условиях отсутствия широко принятых стандартов каждый разработчик изобретал новые форматы файлов. В результате возникла графическая “Вавилонская башня” форматов

gwidon
Download Presentation

Форматы графических файлов

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Форматы графических файлов • Существует огромное количество графических приложений • В условиях отсутствия широко принятых стандартов каждый разработчик изобретал новые форматы файлов. В результате возникла графическая “Вавилонская башня” форматов • С начала 1980 г. возникли официальные группы по стандартам, которые начали создавать общие графические библиотеки для переносимости файлов и кода между различными приложениями и платформами компьютеров.

  2. Форматы графических файлов, особенно в области видео, становятся очень сложными; их оригинальные спецификации часто значительно превышают размер одного тома(~600стр.) • Как разобраться в множестве форматов? • Для некоторых форматов существуют конкретные документы • Существуют программные приложения для обработки графических файлов доступные в исходных текстах • Можно исследовать сами графические файлы бит за битом

  3. Методы записи графических файлов • Есть два различных метода: • растровый (bitmap, карта пикселей) • векторный

  4. Наиболее часто используется bitmар, поскольку его проще реализовать. Изображение разбивается на сетку, в узлах которой записывается световое значение каждой точки - яркость или цвет (pixel - picture element) • Векторное представление определяет описание изображения в виде серии линий или фигур, возможно с некоторыми закрашенными областями. Векторные файлы очень похожи на программы. Например, круг с радиусом 100мм и центром в x=2.25см и y=5см может быть реализован командой circle(100,2250,5000), записанной в коде ASCII • Иногда оба метода используются одновременно (ПостСкрипт), но оба представления совершенно отдельные

  5. Форматы bitmap хорошо работают для изображений со сложными изменениями цвета и формы, таких как фотографии, видеоизображения • Векторные форматы наиболее хорошо применимы для чертежей (системы автоматизированного проектирования - CAD) и изображений с простыми формами (диаграммы, графики), представления картографической информации

  6. Чёрно-белое изображение bitmap описывается в рамках трёх измерений: • число столбцов • число строк • количество бит, используемое для представления яркости • Например: 1024x1024x24 требует около 3 мегабайт 24 бит (3x8) обеспечивает порядка 16 млн. оттенков • Для цветов обычно используется две схемы RGB и CMYK • Другой схемой часто используемой в видеоприложениях является YCbCr

  7. Для практических целей используется палитра, подобная используемой в графических адаптерах • Для телевизионного качества обычно требуется 8-битная (или 10-битная) палитра из 24-битного цветового пространства. В этом случае файл должен содержать не только данные о пикселах, но и палитру

  8. Графические форматы • PCX (Zsoft, Microsoft Inc) • TIFF (Aldus Corporation) • GIF (CompuServe Incorporated) • PNG (Portable Network Grafics) • BMP (Windows Device Independent Bitmap) • WMF (Windows Metafile) • PDF (Portable Document Format) • PSD (Adobe Photoshop Document) • PostScript (Adobe Systems Inc) • JPEG (Joint Photographic Experts Group)

  9. PCX (Zsoft, Microsoft Inc) • Формат PCX - один из самых старых растровых форматов. Применяется для хранения растровых изображений (монохромных, 4-, 8- и 24-битных) • Для кодирования изображения применяется быстрый и простой способ - кодирование цепочек повторяющихся байтов (один из вариантов алгоритма RLE - runlength encoding) • При таком способе кодирования бывает сложно определить насколько сожмется изображение • Для сжатия полноцветных 24-битных изображений данный алгоритм является полностью непригодным

  10. Современные версии поддерживают 24-бита для цвета и реализуются либо с помощью палитры на 256 цветов, либо как полный 24-битовый RGB с максимальным размером изображений 64Kx64K пикселей Недостатки: • В этом формате нельзя хранить таблицы с цветной коррекцией или коррекцией оттенков серого. Схема группового сжатия оказывается неэффективной для изображений, полученных при помощи сканера. Существует множество реализаций, которые появились в результате длительной эволюции PCX. В результате большинство программ, читающих PCX, не могут работать со всем диапазоном применений PCX.

  11. Структура файла • Формат PCX содержит три части: • заголовок файла • растровые данные • палитра с количеством цветов до 256

  12. Заголовок - 128 байтов. Наряду с номером версии, он содержит дополнительную информацию о разрешении (в dpi) сканированного изображения, размер в пикселях, число байт на строку развертки, количестве битов на пиксель и количестве цветовых плоскостей. • Заголовок может содержать информацию о наличие палитры, а так же код, указывающий, какая палитра используется - с оттенком серого или цветная

  13. // Заголовок PCX файла (128 байт) typedef struct _PcxHeader { BYTE Id;             // 00h Идентификатор PCX (всегда 0Ah) BYTE Version;        // 01h Версия BYTE Format;         // 02h Тип сжатия BYTE BitsPixelPlane; // 03h Бит на пиксель в плоскости WORD Xmin;           // 04h Левая граница изображения WORD Ymin;           // 06h Верхняя граница изображения WORD Xmax;           // 08h Правая граница изображения WORD Ymax;           // 0Ah Нижняя граница изображения WORD Hdpi;           // 0Ch Горизонтальное разрешение WORD Vdpi;           // 0Eh Вертикальное разрешение BYTE EgaPalette[48]; // 10h 16-ти цветная палитра EGA BYTE Reserved;       // 40h Зарезервировано (всегда 0) BYTE NumberOfPlanes; // 41h Количество плоскостей WORD BytesLinePlane; // 42h Количество байтов на строку // развертки WORD PaletteInfo;    // 44h Тип палитры WORD HScreenSize;    // 46h Размер экрана по горизонтали WORD VScreenSize;    // 48h Размер экрана по вертикали BYTE Filler[54];     // 4Ah Зарезервировано (всегда 0) }

  14. Поле Version - номер версии программы Paintbrush, которая создала данный PCX-файл Значение           Описание    0     Версия 2.5 с фиксированной палитрой EGA   2     Версия 2.8 с модифицируемой палитрой EGA   3     Версия 2.8 без палитры    4     PC Paintbrush для Windows   5     Версия 3.0

  15. Поле Format может иметь два значения: 0 - незакодированные данные1 - данные закодированные RLE • Поле BitsPixelPlane содержит информацию о количестве битов на пиксель в одной цветовой плоскости Значение Количество цветов    1         2     2         4     4        16    8       256

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

  17. Поле EgaPalette[48] - 48-байтовый массив 8-битовых величин, задающих 16-цветную палитру EGA из 64 доступных цветов, поддерживаемых EGA • Помимо стандартной и расширенной 16-ти цветной палитры EGA изображения в формате PCX могут содержать расширенную 256-ти цветную VGA палитру. В связи с тем, что поля EgaPalette недостаточно для хранения 256-ти цветной палитры, она дописывается в конец файла

  18. Чтобы определить, присутствует ли расширенная палитра, нужно: • 1) Прочитать поле Version, оно должно быть равно 5 • 2) Прочитать поле BitsPixelPlane, оно должно быть равно 8 • 3) Прочитать поле NumberOfPlanes, оно должно быть равно 1 • 4) Отсчитать от конца файла 769 байт, найденное значение должно равняться 12 • Если эти условия выполняются, то в файле присутствует расширенная 256-ти цветная палитра. Цвета этой палитры определяются составляющими RGB, которые записаны тройками, начиная с 768 байта от конца файла. Для 24-битных изображений (поле BitsPixelPlane равно 8, а поле NumberOfPlanes равно 3) никакой палитры нет, и по слоям записаны RGB-составляющие пикселя.

  19. Поле NumberOfPlanes задает количество цветовых плоскостей. В сочетании со значением поля BitsPixelPlane используется для определения видеорежима, в котором воспроизводить изображение: Количество Битов Максимальное цветовых на пиксель количество плоскостей   в плоскости      цветов (видеорежим)    1                      1                  2 (Монохромный)    1                     2                    4 (CGA)    3                      1                   8 (EGA)    4                     1                  16 (EGA и VGA)    1                     8                 256 (SVGA)    3                     8            16777216 (SVGA)

  20. Поле BytesLinePlane указывает размер незакодированной строки развертки цветовой плоскости в байтах. Если умножить значение BytesLinePlane на NumberOfPlanes, получится общая длина строки развертки в байтах ScanLineLen = (BytesLinePlane * NumberOfPlanes); • Поле PaletteInfo содержит тип информации, записанной в цветовой палитре (1 соотвествует цветной или монохромной информации, а 2 - информации о градациях серого). Paintbrush и большая часть других программ, работающих с PCX игнорируют значение этого поля

  21. Поля HScreenSize и VScreenSize определяют разрешение экрана, на котором было создано изображение (позволяют подобрать видеорежим для адекватного отображения изображения). Так как эти поля были добавлены уже после выхода Paintbrush 3.0, практически невозможно определить содержат ли они достоверную информацию или являются просто частью поля Filler. Поэтому прежде чем использовать эти данные, следует проверить их истинность

  22. Растровые (bitmap) данные Растровые (bitmap) данные - основа файла. Они записываются в форме, получаемой после группового сжатия. Значение пикселей представляют собой, как правило, однобайтные указатели положений в палитре. Данные могут храниться в виде плоскостей или в виде пикселей.

  23. BMP (Windows Device Independent Bitmap) • Формат ВМР является родным форматом Windows, он поддерживается всеми графическими редакторами, работающими под ее управлением. Применяется для хранения растровых изображений, предназначенных для использования в Windows. Способен хранить как индексированный (до 256 цветов), так и RGB-цвет (16.700.000 оттенков). • Формат поддерживает изображения с 1,4,8,16, 24 и 32 битами на пиксел.1,4,8 - битные имеют карту цветов, 24 - битные имеют непосредственную цветопередачу. 16 и 32 битные вместо палитры хранят значения масок полей. • Недостатки: Редко поддерживается где - либо ещё кроме Windows

  24. Структура BMP Каждый файл содержит • заголовок файла • заголовок bitmap • собственно изображение

  25. Заголовок файла состоит из 14 битов typedef struct tagBITMAPFILEHEADER { word bfType; // тип файла (для битового // образа - 4D42h ("BM") dword bfSize; // размер файла в байтах word bfReserved1; // не используется - 0 word bfReserved2; // не используется - 0 dword bfOffbits; // смещение данных битового // образа от заголовка в байтах }

  26. За заголовком файла следует заголовок bitmap. • Структура BITMAPINFO, содержит всю информацию о битовом образе • Она делится на две части: структуру BITMAPINFOHEADER, описывающей размеры и цветовой формат битового образа, и массив структур RGBQUAD, определяющей цветовую палитру: typedef struct tagBITMAPINFO { BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColors[1]; }

  27. typedef struct tagBITMAPINFOHEADER { dword biSize; //число байт, занимаемых структурой dword biWidth; //ширина битового образа в пикселах dword biHeight; //высота битового образа в пикселах word biPlanes; //число битовых плоскостей устройства word biBitCount; //число битов на пиксель dword biCompression; //тип сжатия dword biSizeImage; //размер картинки в байтах dword biXPelsPerMeter;//гориз. разрешение устройства, пиксел/м dword biYPelPerMeter; //верт. разрешение устройства, пиксел/м dword biClrUsed; //число используемых цветов dword biClrImportant; //число "важных" цветов } BITMAPINFOHEADER; Подробнее

  28. Изображение, имеющее 1,4 или 8 бит на пиксель должны иметь карту цветов - bmiColors • Размеры карты цветов 2, 16 или 256 элементов, но может быть и меньше если изображение не нуждается в полном комплекте цветов • Для 16,24,32 - битных изображений карта цветов отсутствует • 24 битные изображения содержат непосредственно RGB – цвета • 16 и 32 битные вместо палитры хранят значения масок полей • Поскольку устройства изображения может не отображать все цвета, элементы данных в карте цветов должны начинаться с наиболее важных

  29. Элементы данных карты цветов содержат четыре байта каждый typedef struct tagRGBQUAD { byte rgbRed; //интенсивность красного byte rgbGreen; //интенсивность зеленого byte rgbBlue; //интенсивность голубого byte rgbRserved; //не используется } RGBQUAD;

  30. Данные bitmap следуют сразу за картой цветов • Данные могут быть несжатые, либо же для 4 и 8 битных изображений может использоваться схема RLE. Логически биты сохраняются построчно • Несжатые данные - это ряд значений представляющих собой либо индексы в цветовой палитре, либо реальные RGB - значения. Пикселы упаковываются в байты и выравниваются по строкам

  31. GIF (CompuServe Incorporated) • GIF (Graphics Interchange Format) поддерживает 24-битный цвет, реализованный в виде палитры вплоть до 256 цветов (1 байт) и размер изображений 64К х 64К пикселей. Используется для хранения нескольких растровых изображений в одном файле и для обмена растровыми данными • Первая версия графического формата Gif была разработана в 1987 году специалистами компьютерной сети CompuServe в качестве простого растрового формата для обмена рисунками в сети (Gif87a). В 1989 году была разработанна новая версия формата (Gif89a)

  32. GIF использует LZW-компрессию, что позволяет хорошо сжимать файлы, в которых много однородных заливок (логотипы, надписи, схемы) • GIF-формат позволяет записывать изображение "через строчку" (Interlaced), благодаря чему, имея только часть файла, можно увидеть изображение целиком, но с меньшим разрешением. Эта возможность широко применяется в Интернете. Сначала вы видите картинку с грубым разрешением, а по мере поступления новых данных ее качество улучшается • В GIF'e можно назначить один или более цветов прозрачными, они станут невидимыми в интернетовских браузерах и некоторых других программах. Прозрачность обеспечивается за счет дополнительного Alpha-канала, сохраняемого вместе с файлом

  33. Кроме того, файл GIF может содержать не одну, а несколько растровых картинок, которые интернетовские браузеры могут подгружать одну за другой с указанной в файле частотой. Это называется GIF-анимация • Основное ограничение формата GIF состоит в том, что цветное изображение может быть записано только в режиме 256 цветов Недостатки: • Текущая версия не может иметь более 256 24-битных цветов • За использование формата в разработках взимается плата

  34. GIF имеет пять основных компонентов, которые расположены в фиксированной последовательности. Все компоненты состоят из одного или более блоков. Каждый блок отличается по определенному коду или тегу, расположенному в первом байте Последовательность компонентов следующая: • Блок заголовка • Блок дескриптора логического экрана • Дополнительный “глобальный” блок цветовых таблиц (палитра) • Блоки данных изображения или специализированные • Завершающий блок

  35. Рассмотрим содержимое компонентов: • Заголовок - одиночный блок (6 байтов), который идентифицирует поток данных как GIF и указывает версию дешифратора GIF (87а или 89а) • Блок дескриптора логического экрана - определяет размер, соотношение вертикального и горизонтального числа точек и числовую глубину плоскости изображений. Он эквивалентен экрану монитора, на котором изначально отображалось изображение. Он указывает также, следует ли далее глобальная таблица цветов • Глобальная таблица цветов - если существует, составляет палитру 24-битных RGB триплетов, по 8 бит на цвет. Эта палитра, является палитрой по умолчанию, и используется в случаях, если последующие изображения не имеют собственных палитр

  36. Блоки данных - представляют собой графику или специализированные блоки. Графические блоки обычно содержат bitmap изображения или другое изображения. Специализированные блоки содержат или код для специализированных приложений, иди непечатаемый комментарий. Когда данные предназначены для изображения последовательно появляются три блока: • дескриптор изображения, в котором указанны размеры и палитра изображения и его позиция на локальном экране; • локальная палитра; • LZW-сжатые данные bitmap. Побитовые данные разделяются на непрерывные подблоки до 256 байт. Для множественных изображений эта последовательность повторяется. • Завершающий блок - один байт содержащий 0х3B. Конец файла

  37. TIFF (Aldus Corporation) • TIFF (Tagget Image File Format) - один из наилучших вариантов bitmap формата для обмена данных между носителями • TIFF допускает цветовое разрешение до 48 бит (по 16 бит на цвет) Недостатки: • Универсальность TIFF создает проблемы из-за того, что возникает множество вариантов

  38. Структура файла TIFF Формат TIFF имеет трехуровневую иерархию: • Заголовок файла (Image File Header IFH) • Один или более каталогов (Image File Directory IFD) • Растровые данные

  39. Заголовок занимает первые восемь байт. Заголовок содержит только три элемента данных: • код, указывающий на порядок следования бит (от младшего к старшему “little Indian” или “big Indian”) • кодовое число, указывающие что файл записан в TIFF формате • указатель в каталоге файла изображения ”Image File Directory, IFD”

  40. IFD неопределенно длинные серии 12-байтовых элементов данных • Каждый элемент данных начинается с числового кода, называемого тегом (tag - признак), который определяет тип следующих за ним данных • Элемент IFD также содержит или данные, или чаще указатель на данные • Элемент IFD также определяет тип данных (например, байтовый) и сколько имеется данных (count)

  41. Структура IFD

  42. Структура Элемента

  43. Тег - код от 254 (0хFE), в настоящее время заканчивается 532(0х216) • Отдельным компаниям могут быть выделены свои коды, администратором TIFF для поддержки их собственных программ

  44. Тип данных - код (2 байта). В будущем будут добавлены дополнительные типы

  45. Поле количества - количество значений, а не количество байт в поле данных. Количество байт может быть вычислено с использованием “Тип данных”. Если в поле данных тип ASCU => последний символ 0 (null) он должен учитываться • Указатель на данные - указатель на начало поля данных. Иногда, когда число байт меньше 4, то сами данные. Указатель смещения в байтах от начала файла до начала поля данных • Используются следующие схемы сжатия: RLE, LZW, CCITT, JPEG

  46. JPEG (Joint Photographic Experts Group) • Формат и алгоритм сжатия графических файлов • Алгоритм сжатия, основан не на поиске разницы между пикселами. JPEG кодирование - кодирование с потерями • Формат файла был разработан компанией C-Cube Microsystems • Используя JPEG, можно получить файл в 10-500 раз меньше, чем ВМР

  47. JPEG (Joint Photographic Experts Group) • Любой поток данных (data stream) JPEG начинается с двух байт 255 и 232. Однако многие форматы JPEG помещают заголовок перед потоком данных, поэтому этот маркер не всегда можно найти в начале файла.

  48. PNG (Portable Network Grafics) • Формат был разработан в качестве альтернативы Gif формату. В отличии от последнего он позволяет сохранять всю цветовую информацию и информацию об альфа-каналах масок и слоев. Это чрезвычайно сжатый RGB-формат, в котором используется схема сжатия без потерь • В PNG формате реализован открытый , не запатентованный алгоритм сжатия данных, обеспечивающий более высокие результаты • В отличии от ограниченной 256 цветами палитры Gif, формат PNG позволяет хранить полноцветные изображения с цветовой глубиной 24 бит/пиксел и даже 48 бит/пиксел

  49. PNG (Portable Network Grafics) • Дело в том, что при разработке программных средств, читающих или записывающих данные с помощью LZW-кодирования, необходимо платить лицензионные отчисления Unisys Corporation • В 1994 г. фирма объявила, что все разработчики, создающие или модифицирующие формат GIF, должны получать лицензию и выплачивать авторский гонорар. Поэтому появилось много проектов, нацеленных на разработку формата, который заменил бы GIF

  50. PSD (Adobe Photoshop Document) • PSD - родной формат популярного растрового редактора Photoshop. Он позволяет записывать изображение со многими слоями, их масками, дополнительными каналами, контурами и другой информацией - все, что может сделать Photoshop. • PSD понимают только некоторые программы, из них только Fractal Design Painter и Corel PHOTO-PAINT понимают многослойный PSD, причем лишь PHOTO-PAINT 8 открывает файл PSD 100-процентно корректно.

More Related