існує абсолютно універсльних графічних форматів, більшість же з них взагалі пристосовані для одного конкретного використання (наприклад: веб, макетування, принтери). Тому виникає необхідність перетворювати формати один в інший. Але таке перетворення можливе не завжди і може привести до повного спотворення зображення. Формат може бути не документований, або документація може містити помилки, що також не покращує якість перетворення.
Перетворювати можна двома типами програм: програмами створення та програмами перетворення форматів. У програмі створення (наприклад, Adobe Photoshop) можна відкрити файл у його власному форматі та зберегти в іншому. Якщо одне перетворення потрібно зробити для багатьох файлів, можна використати Batch-перетворення або скористатися спеціальними програмами перетворення (наприклад, Image Alchemy від Handmade Software, Inc.). Універсальна програма перетворення може не так добре розуміти власний формат, як програма створення, але вміє перетворювати набагато більше форматів.
Перетворення растрового в растровий
Перетворення растрового в растровий формати як правило дає найкращі результати з усіх видів перетворення. Усі растрові формати складаються з пікселів, і перетворюються просто піксел за пікселом. Відмінність може бути тільки у заголовках файлів, способах зберігання піксельних даних (наприклад, сторінками) та способах їхнього кодування (наприклад, RLE, LZW, тощо). Можливо доведеться розділити дані на площини, або перевести в іншу модель кольору (наприклад, з RGB у CMYK, HSB, або L*a*b). При перетворенні файлів з одного формату (вихідного) в інший (результуючий) може виникнути ситуація, коли у результуючому форматі може не вистачити кольорів для передачі усіх відтінків початкового зображення. Прикладом такої проблеми може бути перетворення з формату TIFF, що містить 32 біти на піксель, у формат GIF, що не може містити більше ніж 8 бітів на піксель. У таких випадках використовують операції обробки зображень, такі як квантування чи суміш кольорів. Звичайно, що частину інформації при цьому буде втрачено. Тому користувачу доведеться вирішити, що краще – втратити інформацію, чи, можливо, перетворити в інший формат. Може виникнути інша ситуація, коли в результуючому форматі не вистачить полів у заголовку, або навпаки, будуть поля, яких не було у вихідному форматі. У першому випадку деякі дані просто втратяться, а у другому, програмі перетворення прийдеться визначати дані для додаткових полів самостійно.
Перетворення векторного у векторний
Таке перетворення не є надто складним, але можливе виникнення двох проблем. Перша, пов‘язана з відмінностями у кількості та типі об‘єктів або їх параметрів. Наприклад, деякі формати підтримують тільки прості елементи зображення, типу кола, або прямокутників. Потужні формати можуть підтримувати набагато більше додаткових складних елементів (наприклад градієнти, сплайни, шрифти, криві Безьє). Друга проблема виникає через те, що різною може бути система виміру, її точність, тощо.
Перетворення метафайлів у метафайли
Оскільки метафайли містять растрові та векторні дані, при їх перетворенні виникають такі ж проблеми які виникають при перетворенні растрового у растровий та векторного у векторний. (див. два попередніх пункти).
Перетворення векторного чи метафайлового у растровий
Таке перетворення називають раструванням. Суть полягає у тому, що вихідне зображення розбивається на рядки та стовпчики (з заданою щільністю у dpi), що утворюють пікселі, які залишається записати в результуючому (растровому) форматі. При цьому, може виникнути ефект сходинок на похилих лініях та дугах, який можна приховати за допомогою невеличкого розмиття (anti-aliasing).
Перетворення растрового та метафайлового у векторний
Перетворення растрового та метафайлового у векторний є дуже складною операцією. Не завжди можна досягти гарних результатів, тому що при такому перетворенні використовуються складні алгоритми обробки зображень, еврістичні методи пошуку та виділення в однорідних растрових даних ліній, прямокутників, градієнтів, тощо. Ще однією проблемою проблемою є точна передача кольорів. Растрові дані, як правило, повнокольорові (24 bit), а векторні підтримують лише декілька кольорів, що може призвести до втрати кольорів у результуючому забраженні.
Найпоширенішими програмами, що можуть робити подібне перетворення, є Adobe Streamline та Corel Trace.
Перетворення растрового та векторного у метафайл
Таке перетворення не мусить викликати багато проблем, тому що метафайли добре підтримують растрові та векторні дані. Але формат зберігання растрових чи векторних даних може бути різним, тому виникають такі ж проблеми як і при перетворенні растрового у растровий та векторного у векторний.
Приклад програми перетворення
Розглянемо перетворення двох растрових форматів на конкретному прикладі створення програми для перетворення графічного зображення з формату PCX на Microsoft BMP третьої версії. Уся обробка графічних файлів була написана на мові Паскаль з нуля, без використання бібліотек, які в великій кількості можна знайти в Інтернет. На вході програми – файл у форматі PCX, на виході – BMP. Основний принцип роботи програми такий: зчитується заголовок файлу PCX, на його основі створюється заголовок файлу BMP, зчитуються дані кожного пікселя і записуються у формат BMP. Через те, що у форматі BMP рядки даних йдуть знизу догори (у PCX та інших форматах – навпаки), то спочатку записується тимчасовий файл з перевернутим зображенням, а потім цей тимчасовий файл перевертається, щоб отримати нормальний файл BMP, який можна відкривати й використовувати в інших програмах. Оскільки при написанні програми єдиною метою було зрозуміти головний принцип перетворення, то створена програма не є універсальною. Тому вона працює тільки з попередньо заданими іменами файлів і перетворює файли лише з 24 бітами на піксель. Інтерфейс програми вибрано найпростішим для того, щоб концентрувати увагу на самому перетворенні, а не реалізації інтерфейсу. Також, не було приділено уваги анлізу помилок. Розглянемо формати файлів PCX та BMP докладніше, перш ніж перейти до аналізу самої програми.
Формат PCX
PCX –