Національний університет "Києво-Могилянська Академія" | |
Кафедра інформатики | |
Перетворення форматівграфічних файлів | |
Курсова робота студента ДКТ-4 Підгорного Свєтослава | |
Науковий керівник: Бублик В. В. | |
Київ 1998 |
План
Вступ.................................................................................................... 2
Коли який формат використовувати................................................... 4
Інтернет......................................................................................... 4
Друковані видання....................................................................... 5
Електронні презентації................................................................. 6
Перетворення файлів........................................................................... 7
Перетворення растрового в растровий....................................... 7
Перетворення векторного у векторний....................................... 8
Перетворення метафайлів у метафайли....................................... 8
Перетворення векторного чи метафайлового у растровий........ 9
Перетворення растрового та метафайлового у векторний........ 9
Перетворення растрового та векторного у метафайл................ 9
Приклад програми перетворення..................................................... 10
Формат PCX............................................................................... 11
Формат BMP............................................................................... 12
Опис програми........................................................................... 14
Висновки............................................................................................ 20
Література.......................................................................................... 21
Додаток 1........................................................................................... 22
Комп‘ютерна графіка традиційно поділяється на два види: векторну та растрову. Векторне зображення складається з набору відрізків, багатокутників, кривих, що задані в деякій системі координат і описані математично. З векторними даними пов‘язана інформація про їхні атрибути (наприклад, колір, товщина, тощо). Векторне зображення легко масштабувати, повертати, нахиляти. Тому воно не залежить від пристрою відображення – чи то монітор з роздільною здатністю 72 dpi, чи принтер з роздільною здатністю 600 dpi. Файли векторного формату корисні для збереження лінійних елементів (наприклад, ліній та прямокутників), а також елементів, які можна розкласти на прості геометричні об‘єкти (наприклад, текст). Растрове зображення – це масив цифрових значень, що визначають колір окремих пікселів. Кількість бітів на піксель визначає кількість кольорів, що можуть задаватися для цього пікселя. Файли цього типу добре підходять для збереження реальних зображень, наприклад фотографій та відеозображень. Існує ще третій тип – метафайли, – це файли, де міститься як векторна частина зображення, так і растрова.
Але зображення майже ніколи не записується у файл просто так. Як правило, воно кодується за деяким алгоритмом, крім того спочатку додається блок службової інформації (наприклад: ідентифікатор формату, версія формату, роздільна здатність по горизонталі, вертикалі, кількість бітів на колір, тип кодування, кількість площин, палітра, кількість пікселів на дюйм, тощо). Найчастіше графічні дані кодуються з метою зменшення об‘єму файла, але можлива й інша мета (наприклад, щоб: файли не могли продивитися сторонні люди, визначити чи не спотворені дані (наприклад, за методом CRC), тощо). Кодування бувають таких типів: упаковування пікселів, RLE, LZW, Huffmen або CCITT, DCT або JPEG, JBID, ART, Fractal, або будь-якого, який ви самі можете придумати.
За іншою класифікацією графічні файли поділяються на власні (що належать деякій графічній програмі), та обміну (що створені для обміну між декількома програмами). Майже кожна графічна програма має свій власний формат, а для обміну даними з іншими програмами використовує формати обміну.
Зрозуміло, що кожен формат був створений розробником з певною конкретною метою. Ми розлянемо декілька сфер застосування графічних файлів та формати, які доцільно використовувати в кожному випадку.
В Інтернеті найпоширенішими форматами є GIF та JPEG. Головним принципом, за яким створювалися ці формати, є мінімізація розміру файлу для передачі у мережі з низькою пропускною здатністю. GIF підтримує палітрові дані з максимальною кількістю кольорів 256 (без прозорості), анімацію, хоча остання модифікація (GIF89a) може мати у кожному кадрі свою палітру і при використанні прозорих областeй можна досягти більшої кількості кольорів. У випадку коли у вихідному форматі було до 256 кольорів, перетворення на GIF відбудеться без втрат, а якщо ні, то потрібно виконати тонування (dithering), або визначити кольори, що найчастіше використовуються, і подібні кольори перетворити в один, щоб загальна кількість кольорів не перевищувала 256. JPEG є у деякому плані альтернитивою GIF, тому що підтримує 24 біти на колір, але аналогічно до GIF, зони з схожими кольорами перетворюються на один колір при чому навіть при низькому ступені стиснення втрати неминучі. Останнім часом був створений формат PNG, що на відміну від GIF підтримує повну гаму кольорів (до 48 біт), і використовує алгоритм запаковки схожий на LZW. Але він поки що не настільки поширений, як два попередніх.
Серед векторних форматів для Інтернет слід назвати Flash та VRML. VRML – це формат тривимірних сцен, для перегляду яких потрібен додатковий модуль – VRML plug-in (наприклад, Cosmo Player). Цей формат підтримує декілька базових геометричних фігур, різні типи осівтлення, матеріалів, текстур, шрифтів. Flash – це унікальний метафайловий формат, що підтримує анімацію, морфінг, градієнтну прозорість, шари, звук, реакцію на події від мишки чи клавіатури, тощо. Для його перегляду потрібен інший plug-in – Shockwave Flash, а для створення існує лише єдиний редактор – Macromedia Flash, який є досить простим векторним редактором з підтримкою лінії часу (timeline), але можливостей якого досить для написання складних сторінок.
Без сумніву, при роботі з конкретною програмою результат роботи варто зберігати у її рідному форматі, що підтримує, як правило, усі можливості та нюанси цієї програми. Але для обміну фійлів (наприклад з видавництвом) варто використати формати TIFF для растрових даних, та EPS для векторних, чи метафайлових. При цому не будуть виникати проблеми з підтримкою цих форматів у іншій версії чи на іншій платформі. Формат TIFF має два варіанти: для PC та для Mac. Починаючи з версії 5.0 (1988) він підтримує запаковку LZW, а з 6.0 (1992) – JPEG. Насьогодні це один з найуніверсальніших форматів, що підтримує кольори від 1 до 24 бітів, стиснення за методами RLE, LZW, CCITT 3, CCITT 4, JPEG, без стиснення, декілька зображень у одному файлі, альфа-канали. Формат EPS є також дуже універсальним – він підтримує запис даних у текстовому та двійковому форматі, зображення у монохромному, напівтоновому та кольоровому режимі, DCS, роздільну здатність від 75 до 3000 dpi, мініатюри (preview) та шляхи обрізки (clipping path).
У електронних презентаціях немає якого-небудь стандартного формату графічних файлів, кожен виробник підтримує формати які він вважає за потрібне. Багато з виробників створюють свої формати. Більшість програми створення електронних презентацій (наприклад, Microsoft PowerPoint, Lotus Smart Suite, Corel Presentation, Astound) підтримують декілька (до 20) різних графічних форматів.
Як не прикро, але не існує абсолютно універсльних графічних форматів, більшість же з них взагалі пристосовані для одного конкретного використання (наприклад: веб, макетування, принтери). Тому виникає необхідність перетворювати формати один в інший. Але таке перетворення можливе не завжди і може привести до повного спотворення зображення. Формат може бути не документований, або документація може містити помилки, що також не покращує якість перетворення.
Перетворювати можна двома типами програм: програмами створення та програмами перетворення форматів. У програмі створення (наприклад, Adobe Photoshop) можна відкрити файл у його власному форматі та зберегти в іншому. Якщо одне перетворення потрібно зробити для багатьох файлів, можна використати Batch-перетворення або скористатися спеціальними програмами перетворення (наприклад, Image Alchemy від Handmade Software, Inc.). Універсальна програма перетворення може не так добре розуміти власний формат, як програма створення, але вміє перетворювати набагато більше форматів.
Перетворення растрового в растровий формати як правило дає найкращі результати з усіх видів перетворення. Усі растрові формати складаються з пікселів, і перетворюються просто піксел за пікселом. Відмінність може бути тільки у заголовках файлів, способах зберігання піксельних даних (наприклад, сторінками) та способах їхнього кодування (наприклад, RLE, LZW, тощо). Можливо доведеться розділити дані на площини, або перевести в іншу модель кольору (наприклад, з RGB у CMYK,HSB, або L*a*b). При перетворенні файлів з одного формату (вихідного) в інший (результуючий) може виникнути ситуація, коли у результуючому форматі може не вистачити кольорів для передачі усіх відтінків початкового зображення. Прикладом такої проблеми може бути перетворення з формату TIFF, що містить 32 біти на піксель, у формат GIF, що не може містити більше ніж 8 бітів на піксель. У таких випадках використовують операції обробки зображень, такі як квантування чи суміш кольорів. Звичайно, що частину інформації при цьому буде втрачено. Тому користувачу доведеться вирішити, що краще – втратити інформацію, чи, можливо, перетворити в інший формат. Може виникнути інша ситуація, коли в результуючому форматі не вистачить полів у заголовку, або навпаки, будуть поля, яких не було у вихідному форматі. У першому випадку деякі дані просто втратяться, а у другому, програмі перетворення прийдеться визначати дані для додаткових полів самостійно.
Таке перетворення не є надто складним, але можливе виникнення двох проблем. Перша, пов‘язана з відмінностями у кількості та типі об‘єктів або їх параметрів. Наприклад, деякі формати підтримують тільки прості елементи зображення, типу кола, або прямокутників. Потужні формати можуть підтримувати набагато більше додаткових складних елементів (наприклад градієнти, сплайни, шрифти, криві Безьє). Друга проблема виникає через те, що різною може бути система виміру, її точність, тощо.