Лабораторна робота №2 Іванова Євгена
Зміст
BMP (Bitmap Picture)
Формат файлу зображень растрової графіки, в якому зображення зберігається у вигляді двовимірного масиву пікселів. Яке досить легко чітається і виводиться в ОС Windows, в якій є спеціальні функції API, які в цьому допомагають. На кожен піксель в різних файлах може приходити різна кількість біт (глибина кольору). Microsoft пропонує бітності 1, 2, 4, 8, 16, 24, 32, 48 і 64. В бітності 8 і нижче він вказується індексом з таблиці кольорів (палітри), а при великих: безпосереднім значенням. В бітності 16 максимальна кількість кольорів може буде, як 32768 так і 65536 в залежності скільки біт відведенно на кожну компоненту кольору. При зберіганні пікселів у вигляді двовимірного масиву, пікселі растра записуються однопіксельними горизонтальними смужками. Усередині кожного горизонтального ряду пікселі записуються строго тільки від лівого до правого. Ряди, не залежно від розміру осередків, обов'язково повинні доповнюватися нулями до кратного чотирьом байтам розміру. При RLE-кодуванні пікселі за межами растра не промальовуються. Інструкції RLE дозволяють переривати промальовування горизонталі, всього зображення, а також переміщати курсор промальовування на іншу позицію. В останніх версіях формату BMP так само з'явилися можливості по управлінню кольором. Зокрема, можна вказувати кінцеві точки, виробляти гамма-корекцію і вбудовувати колірні профілі ICC.
Загальна структура
- Заголовок зі структури BITMAPFILEHEADER і блоку BITMAPINFO Останній містить:
- Інформаційні поля.
- Бітові маски для вилучення значень колірних каналів (опціональні).
- Таблиця кольорів (опціональна).
- Колірний профіль (опціональний).
- Піксельні дані.
JPEG (Joint Photographic Experts Group)
Растровий формат збереження графічної інформації, що використовує стиснення з втратами. Втрати і спотворення інформації через ступінь стиснення можуть проявлятися вже в призначених для користувача програмах. Формат JPEG часто використовується як формат даних в цифрових камерах. Допустимий рівень стиснення залежить від характеру зображення та існує, як правило, в межах 1:10. При стисненні зображення перетворюється з колірного простору RGB в YCbCr. Після часто проріджують канали Cb і Cr. Потім значення каналів розбиваються на блоки 8x8. Кожен такий блок піддається дискретному косинусному перетворенню (ДКП) , що є різновидом дискретного перетворення Фур'є. Отримані коефіцієнти ДКП квантуються і пакуються з використанням кодів Хаффмана. Файл JPEG містить послідовність маркерів, кожен з яких починається з байта 0xFF, що свідчить про початок маркера, і байта-ідентифікатора.
GIF (Graphics Interchange Format)
Растровий 8-бітний графічний формат, що використовує до 256 чітких кольорів із 24-бітного діапазону RGB. Зображення у форматі GIF зберігається порядково, підтримується тільки формат з індексованою палітрою кольорів. Формат GIF підтримує анімаційні зображення. Вони являють собою послідовність з кількох статичних кадрів, а також інформацію про те, скільки часу кожен кадр повинен бути показаний на екрані. Анімацію можна зробити циклічною. Прозорість в GIF-анімації може використовуватись для того, щоб не зберігати черговий кадр повністю, а лише зміни наступного кадру відносно попереднього. Недокументованою, але підтримуваною можливістю анімованого GIF є можливість використання більше ніж 256 кольорів. Це досягається завдяки тому, що кожен кадр може містити свою палітру, відмінну від палітри інших кадрів.
PNG (Portable Network Graphics)
Растровий формат збереження графічної інформації, що використовує стиснення без втрат. На сьогодні є одним із основних форматів веб-графіки. PNG був створений для заміни формату GIF, графічним форматом, який не потребує ліцензії для використання. Формат PNG характеризується сильнішим рівнем стиснення для файлів з більшою кількістю кольорів ніж GIF, але різниця становить близько 5-25%, чого недостатньо для абсолютної переваги формату, тому що маленькі картинки GIF стискає принаймні не гірше. Існує також одна особливість GIF, яку не повторює PNG — це можливість збереження множинного зображення, особливо мультиплікації.
Файл PNG складається з блоків даних, що називаються chunk'ами. chunk в загальному випадку має змінну довжину. Щоб відрізнити один від іншого, в кожному chunk'і є поле типу. Мінімальний PNG-файл повинен містити як мінімум сигнатуру і три chunk'a:
- IHDR - заголовок файлу
- IDAT - дані, власне картинка
- IEND - кінець файлу
Chunk складається з чотирьох полів:
- Length - довжина поля даних chunk'а (4 байти)
- Type - поле типу (4 байти)
- Data - поле даних. може бути нульової довжини
- CRC - поле з перевіряючим кодом для полів Type, Data
SVG (Scalable Vector Graphics)
Мова розмітки масштабованої векторної графіки, створений Консорціумом Всесвітньої павутини (W3C) і входить до підмножина розширюваної мови розмітки XML, призначений для опису двовимірної векторної і змішаної векторно / растрової графіки у форматі XML. Підтримує як нерухому, так і анімовану інтерактивну графіку - або, в інших термінах, декларативну і скриптову. Не підтримує опис тривимірних об'єктів. В основу SVG лягли мови розмітки VML і PGML. Текстовий формат - файлу SVG можна читати і редагувати (за наявності деяких навичок) за допомогою звичайних текстових редакторів.
У SVG-файл є можливість вставляти елементи із зображеннями у форматах PNG, GIF або JPG. Текст є текстом, а не зображенням, тому його можна виділяти і копіювати, він індексується пошуковими машинами, не потрібно створювати додаткові метафайли для пошукових роботів. Анімація реалізована в SVG за допомогою мови SMIL. Підтримуються скриптові мови на основі специфікації ECMAScript. SVG-елементами можна керувати за допомогою JavaScript. Застосування скриптів і анімації в SVG дозволяє створювати динамічну і інтерактивну графіку. SVG має всі переваги і недоліки XML.
Згідно з офіційною специфікацією можна малювати прості об'єкти за допомогою SVG: прямокутник, коло, лінію, еліпс, ламану лінію або багатокутник.
Приклад простої лінії за допомогою тега line з усього двома параметрами - точками початку (x1 і x2) і кінця (y1 і y2):
<svg> <line x1="0" y1="0" x2="500" y2="500" stroke-width="1" stroke="rgb(0,0,0)"/> </svg>