Контрольная работа: Растрові та векторні формати зображень

Формат BMP

Формат BMP (від слова bitmap) широко використовується в ОС Windows для растрової графіки. Наприклад, якщо вам потрібно створити тло вашого робочого столу, то необхідно записати відповідне зображення в цьому форматі.

Загальна структура BMP-файлу така:

Заголовок файлу BMP називається BITMAPFILEHEADER. У ньому міститься загальний опис файлу. Заголовок має такі поля, наведені в таблиці 6.2.


Далі у файлі йде ще один заголовок — BITMAPINFOHEADER, у якому зберігається опис розмірів растра й колірного формату пікселів (табл. 6.3).

Потім у файлі міститься палітра у вигляді декількох записів RGBQUAD. Кожен запис містить чотири поля (табл. 6.4).

Кількість записів RGBQUAD дорівнює кількості використовуваних кольорів.

Палітра відсутня, якщо число бітів на піксел дорівнює 24. Також палітра не потрібна й для деяких колірних форматів 16 і 32 біти на піксел.

Після палітри (якщо вона є) у файлі BMP записується растр у вигляді бітового (а точніше, байтового масиву). У бітовому масиві послідовно записуються байти рядків растра. Кількість байтів у рядку повинна бути кратна чотирьом, через це, якщо кількість пікселів по горизонталі не відповідає такій умові, то праворуч у кожен рядок дописується певна кількість бітів (вирівнювання рядків на межу подвійного слова).

Можна сказати, що файли BMP мають найбільший розмір порівняно з файлами інших растрових форматів. Растр тут зберігається майже в тому вигляді (якщо не враховувати вирівнювання рядків на довжину, кратну 4 байтам), в якому він записується в оперативну пам'ять для відображення та обробки. Зазвичай програми так і записують файли BMP, хоча в цьому форматі передбачене ущільнення, (компресія, compressing, англ.) растра методом RLE. BMP-файли з компресією можуть мати розширення DIB або RLE.

Існує різновид формату BMP для операційної системи OS/2.

Формат Bitmap32

Це порівняно новий формат, створений на базі формату BMP, від котрого відрізняється тим, що дані про одну точку зберігаються не в 24, а в 32 бітах. Додаткові 8 бітів використовуються для Alpha-каналу. Формат доки що не одержав поширення, але після появи Windows XP, де Alpha-канал був узаконений на рівні ядра системи, формат отримав гарні перспективи на майбутнє.

Отже, для розроблювана цей формат зручний, насамперед, через збереження додаткової складової прозорості, яка зберігається усередині файлу з текстурою.

Формат PCX

Формат PCX запропонований компанією Z-Soft у програмі Paintbrush. Може бути використаний на платформі Macintosh, хоча був написаний для PC. Цей формат застосовувався багатьма компаніями, що спеціалізуються в області програмного забезпечення. Він зручний для зберігання зображень типу ділової графіки (креслення, діаграми, схеми тощо). Підтримуються колірні формати 1, 4, 8 та 24 біти на піксел. До недоліків PCX слід віднести непристосованість до запису фотографій, а також наявність численних версій.

У форматі PCX використаний один із варіантів алгоритму ущільнення RLE (від англійського Run Length Encoding — групове кодування).

RLE — один із найстаріших і найпростіших алгоритмів компресії графіки. Основна його ідея така: якщо в рядках растра зустрічаються ланцюжки з однакових пікселів, наприклад,

то можна замінити ланцюжки на пари чисел — (лічильник повторень, значення). Для окремих пікселів, що не входять до ланцюжків, лічильник не потрібен:

Чим більше ланцюжків у растрі та чим вони довші, тим більший ефект ущільнення.

Як програма може прочитати код RLE? Потрібно якось розрізнювати лічильник та значення. Для цього необхідне спеціальне кодування. У версії RLE для PCX ознакою лічильника служать одиниці у двох лівих бітах (llxxxxxx) поточного байта кодованого масиву. Відповідно 6 бітів, що залишилися, означають кількість повторів у ланцюжку (від 1 до 63) наступного за лічильником значущого байта. Таким чином, рядок із 63 повторюваних байтів перетворюється у два байти, тобто, для таких ланцюжків досягається ущільнення майже в 32 рази.

Окремі байти растра, що не утворюють ланцюжків, кодуються двома способами, в залежності від їхнього значення. Якщо два лівих біти не одиниці, то байт кодується одним власним значенням. Окремі байти виду llxxxxxx доводиться кодувати парою байтів (лічильник повторень, значення), причому лічильник тут дорівнює одиниці:

К-во Просмотров: 291
Бесплатно скачать Контрольная работа: Растрові та векторні формати зображень