|
|
|
§ 24. Объекты компьютерной графики Форматы графических файлов
Различают растровые и векторные форматы графических файлов. Среди них, в свою очередь, выделяют собственные (оригинальные) форматы графических приложений и универсальные графические форматы, которые «понимаются» всеми приложениями, работающими с растровой (векторной) графикой. Для всех растровых форматов общей проблемой является большой объём данных. Для её решения применяют различные методы сжатия данных.
BMP (от англ. Bit МаР image — битовая карта изображения). В этом формате можно хранить только однослойные растры. На каждый пиксель в разных типах файлов может приходиться разное количество бит (глубина цвета): 1, 2, 4, 8, 16, 24, 32, 48 и 64. Изображения в этом универсальном формате в большинстве случаев хранятся в файлах попиксельно, без сжатия, потому размеры таких файлов достаточно большие. Сколько бит может приходиться на глубину цвета в файлах с расширением bmp, созданных в графическом редакторе Paint?
Для глубины цвета 4 и 8 бит формат BMP допускает RLE- кодирование, которое может уменьшить размер файлов. Алгоритм RLE (от англ. Run Length Encoding — кодирование длин серий) — один из простейших методов сжатия изображений. Его основной идеей является поиск цепочек одинаковых элементов и замена их на пары «число повторений — значение», что в определённых случаях существенно уменьшает избыточность данных. Например, состоящая из 39 символов строка AAAAAABBCCCCCCCDEEEEEEAAAAAAAAAAAAAAAAA будет закодирована следующим образом: 6A2B7C1D6E17A. Полученная последовательность состоит из 13 символов. Данные оказались сжаты в 39/13 = 3 раза. Алгоритм в первую очередь рассчитан на изображения с большими областями одного цвета (деловая графика, схемы, рисунки и т. п.). При его использовании в других ситуациях (например, при сохранении цветных фотографий) вместо уменьшения размера файла может происходить его увеличение. Возьмём строку, в которой нет большого количества цепочек одинаковых элементов и достаточно часто встречаются символы, идущие без повторов: ABCDBCABCDDDFFFFFF. После сжатия методом RLE она будет выглядеть так: 1A1B1C1D1B1C1A1B1C3D6F. Исходная строка состоит из 18 символов, а результат сжатия — из 22. Размер данных увеличился в 22/18 ≈ 1,22 раза. Рассмотрим внимательно исходную строку: среди её первых девяти элементов нет цепочек из идущих подряд одинаковых символов (ABCDBCABC), затем записаны 3 символа «D» и наконец — 6 символов «F». Если для записи длины цепочки идущих подряд одинаковых символов использовать положительные числа, а для записи количества следующих друг за другом различных символов использовать отрицательные числа, то можно записать: -9ABCDBCABC3D6F. Исходная строка состоит из 18 символов, а сжатая — из 15. Размер данных уменьшился в 18/15 = 1,2 раза. Для сжатия сложных изображений зачастую применяется алгоритм словарей или алгоритм LZW — Лемпеля-Зива-Велча, названный так по именам его разработчиков Авраама Лемпеля, Якоба Зива и Терри Велча. В его основе лежит идея замены наиболее часто встречающихся последовательностей в исходном потоке данных ссылками на «образцы», хранящиеся в специально создаваемой таблице (словаре).
Этот способ активно применяется при сжатии самых разных данных, в том числе и графических. Такой способ сжатия применяется в графических форматах GIF, PNG, TIFF. Рассмотрим эти форматы подробнее. GIF (от англ. Graphics Interchange Format — формат обмена графикой) обладает высокой степенью сжатия, дающей возможность уменьшить размеры файлов в несколько раз. Этот формат предназначен для хранения статичных и анимированных изображений, которые содержат до 256 цветов (например, рисованные иллюстрации). GIF-анимация представляет собой последовательность из нескольких статичных кадров, а также информацию о том, сколько времени каждый кадр должен быть показан на экране. В цикличных анимациях вслед за последним кадром начинается воспроизведение первого кадра и т. д. Долгое время GIF был одним из наиболее распространённых форматов в Интернете. Стандартное расширение имён файлов данного типа — gif.
|
|
|