Перетворення форматів графічних файлів
Найпоширенішими програмами, що можуть робити подібне перетворення, є Adobe Streamline та Corel Trace.
Перетворення растрового та векторного у метафайл
Таке перетворення не мусить викликати багато проблем, тому що метафайли добре підтримують растрові та векторні дані. Але формат зберігання растрових чи векторних даних може бути різним, тому виникають такі ж проблеми як і при перетворенні растрового у растровий та векторного у векторний.
Приклад програми перетворення
Розглянемо перетворення двох растрових форматів на конкретному прикладі створення програми для перетворення графічного зображення з формату PCX на Microsoft BMP третьої версії. Уся обробка графічних файлів була написана на мові Паскаль з нуля, без використання бібліотек, які в великій кількості можна знайти в Інтернет. На вході програми – файл у форматі PCX, на виході – BMP. Основний принцип роботи програми такий: зчитується заголовок файлу PCX, на його основі створюється заголовок файлу BMP, зчитуються дані кожного пікселя і записуються у формат BMP. Через те, що у форматі BMP рядки даних йдуть знизу догори (у PCX та інших форматах – навпаки), то спочатку записується тимчасовий файл з перевернутим зображенням, а потім цей тимчасовий файл перевертається, щоб отримати нормальний файл BMP, який можна відкривати й використовувати в інших програмах. Оскільки при написанні програми єдиною метою було зрозуміти головний принцип перетворення, то створена програма не є універсальною. Тому вона працює тільки з попередньо заданими іменами файлів і перетворює файли лише з 24 бітами на піксель. Інтерфейс програми вибрано найпростішим для того, щоб концентрувати увагу на самому перетворенні, а не реалізації інтерфейсу. Також, не було приділено уваги анлізу помилок. Розглянемо формати файлів PCX та BMP докладніше, перш ніж перейти до аналізу самої програми.
Формат PCX
PCX – один з форматів, що часто використовується, через свою простоту. Спочатку він був розроблений фірмою Zsoft для використання у програмі PC Paintbrush для MS-DOS. Дані зображення кодуються за допомогою одного з варіантів алгоритму RLE, який незважаючи на простоту та швидкісь, не є ефективним. Цей формат може містити зображення з 4, 8 та 24 бітами на піксель. Далі ми будемо розглядати особливості 24 бітового формату.
Перші 128 байтів файлу містять заголовок:
Typedef struct _PcxHeader {
BYTE Id;Ідентикатор PCX (0Ah)
BYTE Version;Версія
BYTE Format;Кодування (1 - RLE)
BYTE BitsPixelPlane;Кількість бітів на піксель
WORD Xmin;Ліва мінімальна координата
WORD Ymin;Верхня мінімальна координата
WORD Xmax;Права максимальна координата
WORD Ymax;Нижня максимальна координата
WORD Hdpi;Горизонтальна роздільна здатність
WORD Vdpi;Вертикальна роздільна здатність