Лабораторна робота 2-3 Графіка

Матеріал з Вікі ЦДУ
Версія від 18:12, 16 березня 2016; Палій Вадим (обговореннявнесок)

(різн.) ← Попередня версія • Поточна версія (різн.) • Новіша версія → (різн.)
Перейти до: навігація, пошук

BMP (Bitmap) — bitmap-формат або DIB (англ. device independent bitmap)-формат файлу зображень растрової графіки, в якому зображення зберігається у вигляді двовимірного масиву пікселів. Запам'ятовує одно і багатокольорові (RGB) ілюстрації у формі Pixel. BMP-формат використовується в операційній системи Windows та OS/2. Дані цього формату включаються в двійкові файли ресурсів RES і в PE-файли.

Формат файлу BMP здатний зберігати 2D цифрові зображення довільної ширини, висоти та роздільної здатності, як монохромні так і кольорові, різної глибини кольору, і, необов'язково, зі стисненням данних, альфа-каналом та керуванням кольору. Специфікація Windows Metafile (WMF) охоплює формат файлу BMP. Серед іншого, wingdi.h визначає BMP-константи та структури.

Можливості формату BMP 

У даному форматі можна зберігати тільки одношарові растри. На кожен піксель в різних файлах може приходити різна кількість біт (глибина кольору). Microsoft пропонує бітності 1, 2, 4, 8, 16, 24, 32, 48 і 64. В бітності 8 і нижче він вказується індексом з таблиці кольорів (палітри), а при великих: безпосереднім значенням. Колір же в будь-якому випадку можна задати тільки в колірній моделі RGB, але в бітності 16 і 32 можна отримати Grayscale[ru] з глибиною до 16 і 32-ох біт відповідно. Часткова прозорість реалізована альфа-каналом різних бітностей, але при цьому прозорість без градацій можна побічно отримати RLE-кодуванням.

У більшості випадків пікселі зберігаються у вигляді відносно простого двовимірного масиву. Для бітності 4 і 8 доступно RLE-кодування, яке може зменшити їх розмір. Формат BMP так само підтримує вбудовування даних у форматах JPEG і PNG. Але останнє скоріше більше призначене не для компактного зберігання, а для обходу обмежень архітектури GDI, яка не передбачає пряму роботу із зображеннями форматів відмінних від BMP.

В останніх версіях формату BMP так само з'явилися можливості по управлінню кольором. Зокрема, можна вказувати кінцеві точки, виробляти гамма-корекцію і вбудовувати колірні профілі ICC[en].


JPEG (Joint Photographic Experts Group) — растровий формат збереження графічної інформації, що використовує стиснення з втратами.

При необхідності дуже сильного стиснення втрати можуть бути переглянуті за допомогою модуля Matrixmuster (матричний зразок, матричний малюнок). Втрати і спотворення інформації через ступінь стиснення можуть проявлятися вже в призначених для користувача програмах. Допустимий рівень стиснення залежить від характеру зображення та існує, як правило, в межах 1:10. Формат JPEG часто використовується як формат даних в цифрових камерах. У Інтернеті формат JPEG застосовується для відображення напівтонових ілюстрацій та графічної інформації з плавним переходом тонів. Формат JPEG, на відміну від GIF і PNG, не підтримує ні анімацію, ні прозорість. Область застосування формату досить вузька — розповсюдження високоякісної напівтонової графіки в Інтернеті. Формат підтримується практично всіма сучасними графічними програмами та веб-браузерами.

Алгоритм стиснення даних, що використовується у форматі, базується на алгоритмі дискретного косинусного перетворення.

Найбільша роздільна здатність,яку підтримує формат JPEG/JFIF є 65535×65535.

GIF (від англ. Graphics Interchange Format — «формат обміну зображеннями») — 8-бітний растровий графічний формат, що використовує до 256 чітких кольорів із 24-бітного діапазону RGB. Формат було розроблено компанією CompuServe у 1987 році, і з того часу набув широкої популярності у всесвітній павутині завдяки своїй відносній простоті та мобільності. Одними із головних особливостей формату є підтримка анімації та прозорості.

Для стискання файлів використовує LZW-компресію. Область застосування[ред. • ред. код] Зображення у форматі GIF зберігається порядково, підтримується тільки формат з індексованою палітрою кольорів, яка може містити до 256 кольорів із 24-бітного діапазону RGB, хоча спочатку формат розроблявся тільки для підтримки 256-кольорової (8-бітної) палітри.

Один з кольорів у палітрі може бути оголошений «прозорим». У цьому випадку в програмах, які підтримують прозорість GIF (наприклад, більшість сучасних браузерів) крізь пікселі, зафарбовані «прозорим» кольором, буде видно фон. «Напівпрозорість» пікселів (технологія альфа-каналу) не підтримується.

Анімовані зображення[ред. • ред. код] Формат GIF підтримує анімаційні зображення, вони являють собою послідовність з кількох статичних кадрів, а також інформацію про те, скільки часу кожен кадр повинен бути показаний на екрані. Анімацію можна зробити циклічною. (англ. loop), тоді слідом за останнім кадром почнеться відтворення першого кадру.

Прозорість в GIF-анімації може використовуватись для того, щоб не зберігати черговий кадр повністю, а лише зміни наступного кадру відносно попереднього.

Недокументованою, але підтримуваною можливістю анімованого GIF, є можливість використання більше ніж 256 кольорів. Це досягається завдяки тому, що кожен кадр може містити свою палітру, відмінну від палітри інших кадрів.

PNG (Portable Network Graphics) — растровий формат збереження графічної інформації, що використовує стиснення без втрат. PNG був створений для заміни формату GIF графічним форматом, який не потребує ліцензії для використання. Зазвичай файли формату PNG мають розширення .png і використовують позначення MIME-типу image/png. Застосування[ред. • ред. код] Формат PNG зберігає інформацію у стиснутому вигляді, але стиснення проводиться без втрат якості, на відміну від формату JPEG. Формат PNG спроектований на заміну застарілого і простішого формату GIF, а також подекуди, для заміни складнішого формату TIFF (див. офіційний сайт PNG або хронологічну сторінку).

Особливості[ред. • ред. код] Формат PNG характеризується сильнішим рівнем стиснення для файлів з більшою кількістю кольорів ніж GIF, але різниця становить близько 5-25%, чого недостатньо для абсолютної переваги формату, тому що маленькі картинки GIF стискає принаймні не гірше. Існує також одна особливість GIF, яку не повторює PNG — це можливість збереження множинного зображення, особливо мультиплікації. Призначення PNG — зберігати лише одне зображення. Для передачі множинних зображень використовується розширений формат MNG, опублікований у середині 1999 року, який підтримується у різних прикладних програмах.

Патенти[ред. • ред. код] Патент на формат GIF належить компанії CompuServe, що обмежує можливості використання формату у вільному програмному забезпеченні. На додаток, у основі методу стиснення, що застосовується до графічних файлів при збереженні їх у GIF, лежить алгоритм стиснення LZW, патент на який належить компанії Unisys. Слід також відмітити, що термін дії патенту на формат GIF завершився11 серпня 2006 року.

PNG використовує відкритий, не патентований алгоритм стиснення Deflate, вільні реалізації якого доступні в інтернеті. Цей же алгоритм використовують і багато інших програм компресії даних, накшталт PKZIP та GNU GZIP.

Підтримка прозорості[ред. • ред. код] Проблема підтримки 24-бітної (повної) прозорості зображення формату PNG у internet-браузері Internet Explorer виробництва Microsoft вирішена компанією-виробником цього програмного продукту у сьомій його версії. Попри це, існує ряд прийомів і технік, які дозволяють веб-майстрам уникнути цієї проблеми, застосовуючи різні скрипти і функції. Всі інші сучасні браузери успішно підтримують можливості формату PNG


Формат SVG Опис: мова розмітки масштабована векторна графіки, створений Консорціумом Всесвітньої павутини (W3C) і входить в підмножина розширюваної мови розмітки XML, призначений для опису двовимірної векторної і змішаної векторно / растрової графіки в форматі XML. Підтримує як нерухому, так і анімовану інтерактивну графіку - або, в інших термінах, декларативну і скриптовими. Не підтримує опис тривимірних об'єктів (не плутати з імітацією тривимірності шляхом світлотіні). Це відкритий стандарт, який є рекомендацією консорціуму W3C - організації, яка розробила такі стандарти, як HTML і XHTML. В основу SVG лягли мови розмітки VML і PGML. Розробляється з 1999 року. У 2001 році вийшла версія 1.0, в 2011 - версія 1.1, яка залишається актуальною до сьогоднішнього дня. В даний час в активній розробці знаходиться версія 2. Переваги формату: Текстовий формат - файли SVG можна читати і редагувати (при наявності деяких навичок) за допомогою звичайних текстових редакторів. При перегляді документів, що містять SVG графіку, є доступ до перегляду коду файлу, і можливість збереження всього документа. Крім того, SVG файли зазвичай виходять менше за розміром, ніж порівнянні за якістю зображення в форматах JPEG або GIF, а також добре піддаються стисненню. Масштабованість - SVG є векторним форматом. Існує можливість збільшити будь-яку частину зображення SVG без втрати якості. Додатково, до елементів SVG документа можливо застосовувати фільтри - спеціальні модифікатори для створення ефектів, подібних застосовуваним при обробці растрових зображень (розмиття, видавлювання, складні системи трансформації та ін.) У тексті SVG-коду фільтри описуються тегами, візуалізацію яких забезпечує засіб перегляду, що не впливає на розмір вихідного файлу, забезпечуючи при цьому необхідну ілюстративну виразність. Широке використання растрової графіки в SVG документах. Є можливість вставляти елементи з зображеннями в форматах PNG, GIF або JPG. Текст в графіці SVG є текстом, а не зображенням, тому його можна виділяти і копіювати, він індексується пошуковими машинами, не потрібно створювати додаткові метафайли для пошукових роботів. Анімація реалізована в SVG за допомогою мови SMIL (Synchronized Multimedia Integration Language), розробленого також консорціумом W3C. Підтримуються скриптові мови на основі специфікації ECMAScript. SVG-елементами можна керувати за допомогою JavaScript. Застосування скриптів і анімації в SVG дозволяє створювати динамічну і інтерактивну графіку. У SVG забезпечується подієва модель, відстежуються події (завантаження сторінки, зміна її параметрів, події миші, клавіатури та ін.) Анімація може запускатися по певній події (наприклад «onmouseover» або «onclick»), що надає графіку інтерактивність. У кожного елемента є свої власні події, до яких можна прив'язувати окремі скрипти. SVG - відкритий стандарт. На відміну від деяких інших форматів, SVG не є чиєюсь власністю. SVG документи легко інтегруються з HTML і XHTML документами. Зовнішній SVG підключаються через тег <object>, значення атрибута data - ім'я файлу з розширенням «.svg», що містить розмітку SVG, type - MIME-тип, тобто image / svg + xml. Атрибути width і height визначають розміри області SVG по горизонталі і по вертикалі. Елементи SVG сумісні з HTML і DHTML. Сумісність з CSS (англ. Cascading Style Sheets). Відображенням (форматуванням і декоруванням) SVG елементів можна управляти за допомогою таблиці стилів CSS 2.0 і її розширень, або безпосередньо за допомогою атрибутів SVG елементів. SVG надає всі переваги XML: Можливість роботи в різних середовищах. Інтернаціоналізація (підтримка Юнікоду). Широка доступність для різних додатків. Легка модифікація через стандартні API - наприклад, DOM. SVG підтримує стандартизовану W3C об'єктну модель документа DOM, забезпечуючи доступ до будь-якого елементу, що дає широкі можливості по динамічному зміни елементів, їх атрибутів і подій. Легке перетворення таблицями стилів XSLT. Як будь-який заснований на XML формат, SVG дає можливість використовувати для його обробки таблиці трансформації (XSLT). Перетворюючи XML-дані в SVG за допомогою простого XSL, можна легко отримати графічне представлення будь-яких даних, наприклад візуалізувати хімічні молекули, описаних на мові CML (Chemical Markup Language). Недоліки формату: SVG успадковує всі недоліки XML, такі як великий розмір файлу (втім, останній компенсується існуванням стисненого формату SVGZ, проте його використання на даний момент складно, так як SVGZ не має власного mimetype). Складність використання в великих картографічних додатках через те, що для правильного відображення маленької частини зображення документ необхідно прочитати цілком. Чим більше в зображенні дрібних деталей, тим швидше росте розмір SVG-даних. Граничний випадок - коли зображення являє собою білий шум. В цьому випадку SVG не тільки не дає ніяких переваг в розмірі файлу, але навіть дає програш по відношенню до растровому формату. На практиці, SVG стає невигідний вже задовго до того, як зображення дійде до стадії білого шуму.

Порівняння форматів

Картинка в BMP - [1]Картинка в GIF - [2]Картинка в JPG - [3]Картинка в PNG - [4]Картинка в SVG - [5]
BMP JPEG GIF PNG SVG
Тип Растровий Растровий Растровий Растровий Векторний
Анімація не підтримується не підтримується покадрова покадрова динамічна графіка
Прозорість Не зберігає Не зберігає Можлива Можлива Можлива
Методи стиснення RLE JPEG LZW LZ77 SVGZ
Розмір великий малий малий звичайний великий