Оскільки будь-якій інформації (у тому числі і графічною) властива надмірність, стиснення дозволяє значно зменшити її об'єм. Стиснення даних - процес перетворення даних з одного формату в іншій, меншого розміру, внаслідок чого та ж логічна інформація зберігається у вигляді фізичної інформації меншого об'єму. Ступінь стиснення може коливатися від 4:1 до 200:1 - це залежить від типу даних і вживаного алгоритму. Більш ніж п'ятидесятиразове стиснення можна застосовувати для звукових або відеофайлів, але воно пов'язане з втратою якості.
Існує безліч різних алгоритмів стиснення, що враховують ті або інші особливості інформації, що стискається. Проте алгоритму, що однаково добре стискає файли будь-яких форматів, поки не створено.
З найзагальніших позицій всі існуючі алгоритми стиснення можна розбити на два великі класи:
стиснення без втрат;
стиснення з втратами.
Більшість схем стиснення без втрат заснована на пошуку в растровому зображенні піксельних узорів, що повторюються. Такий узор можна запам'ятати один раз і згодом повторити його необхідну кількість разів. Подібні схеми стиснення повністю - Пиксел за пикселом - відновлюють початкове зображення. При цьому в початкових даних нічого не відкидається і не втрачається. Метод стиснення без втрат (наприклад, використовуваний у форматах GIF або TIF) дуже ефективний для растрових малюнків, що містять великі області однотонного зафарбовування, або растрових узорів, що повторюються. У таких випадках найчастіше досягається коефіцієнт стиснення 10:1.
Як вже наголошувалося, використання алгоритмів стиснення без втрат виявляється неефективним для растрових зображень фотографічної якості, в яких кожен ПИКСЄЛ відрізняється від сусідніх. Застосування механізму стиснення узорів до зображень, на яких узорів, що повторюються, немає, часто приводить до нікчемних результатів при великих витратах часу. Процес стиснення, що триває хвилини, може зменшити розмір файлу всього лише на 1-5%, а іноді навіть збільшити розмір файлу.
Стиснення з втратами, навпаки, краще всього працює з тими зображеннями, на яких немає узорів, що повторюються, або великих областей однотонного зафарбовування. У растровому малюнку, який містить безліч пикселов (наприклад, 100 відтінків блакитного кольору неба, що трохи відрізняються), що злегка відрізняються один від одного, великі області можуть заповнюватися пикселами одного кольору або піксельним узором, що імітує вид початкової області.
Ключовим моментом в застосуванні стиснення з втратами є визначення "прийнятного рівня" втрат. Рівень цей суб'єктивний і залежить від зображення-оригіналу і від того, як він використовуватиметься. Якщо ваше оригінальне зображення -фотографія музейної якості, призначена для публікації у високохудожньому виданні, то ні про які "прийнятні втрати" не може бути і мови. Малюнок повинен бути відтворений якомога точніше. Інша справа електронна публікація на web-сторінці, де одним з головних критеріїв є малий розмір файлу.
JPEG - стандарт формату файлів для растрових зображень з ефективним стисненням інформації.
На сьогоднішній день формат JPEG (Joint Photographic Experts Group) є одним з найбільш поширених графічних форматів для стиснення файлів. У нім реалізований алгоритм стиснення з втратами. Це означає, що в процесі стиснення зображення відбувається часткова втрата інформації, що зберігається у файлі. Тому в процесі застосування цієї процедури стиснення доводиться шукати компроміс між ступенем стиснення і якістю зображення, що зберігається. Чим більше стиснення, тим нижче якість, і навпаки.
Строго кажучи, JPEG не формат, а алгоритм стиснення, в основі якого лежить не пошук однакових елементів, як у разі RLE і LZW, а пошук різниці між пикселами.
Кодування даних за допомогою використовуваного з JPEG алгоритму стиснення здійснюється у декілька етапів.
Спочатку графічні дані конвертуються в колірний простір Lab-моделі (Lab-модель використовується графічними редакторами як внутрішня модель для взаємного перетворення RGB- і CMYK-моделей).
Потім відкидається половина або три чверті інс-срмації про колір (залежно від реалізації алгоритму).
Далі аналізуються блоки розміром 8x8 пикселов. Для кожного блоку формується набір чисел. Перші декілька чисел представляють колір блоку в цілому, тоді як подальші числа відображають тонкі деталі. Оскільки спектр деталей базується на зоровому сприйнятті людини, то крупні деталі помітніші.
На наступному етапі залежно від вибраного рівня якості, відкидається певна частина чисел, що характеризують тонкі деталі.
На останньому етапі використовується кодування методом Хаффмана для ефективнішого стиснення кінцевих даних.
Алгоритм стиснення Хаффмана (Huffman) розроблений ще в 1952 році. У нім здійснюється послідовний перебір наборів символів, які аналізуються з метою визначення частоти появи кожного символу. Потім найбільш символи, що часто зустрічаються, кодуються за допомогою мінімальної можливої кількості бітів. Наприклад, в англійських текстах найчастіше зустрічається буква "е". Використовуючи кодування Хаффмана, можна представити "е" всього лише двома бітами (1 і 0) замість восьми бітів, необхідних для представлення букви "е" в кодуванні ASCII.
Відновлення даних відбувається в зворотному порядку. Таким чином, чим вище рівень компресії, тим більше за дані відкидається і тим нижче якість. Використовуючи JPEG, можна отримати файл в 1-500 разів менше, ніж BMP. Цей формат апаратного незалежний, повністю підтримується і PC і Macintosh, проте він відносно новий і не розуміється старими програмами (до 1995 року).
Разом із стандартним варіантом існують ще два підтипи формату JPEG, орієнтованих на застосування в Інтернеті:
Baseline Optimized - файли цього підтипу формату декілька краще стискаються, але не читаються деякими програмами. Проте всі основні браузеры його підтримують.
Progressive JPEG також розроблений спеціально для мережі, його файли менше стандартних, але трохи більше підтип формату Baseline Optimized. Головна особливість Progressive JPEG полягає в підтримці чересстрочного виведення зображення (використання цієї властивості набагато скорочує час передачі і виводу на екран насичених графікою Web-сторінок).
При збереженні графічних зображень у форматі JPEG слід враховувати наступне.
JPEG краще підходить для стиснення растрових картинок фотографічної якості, чим для логотипів або схем. Це пов'язано з тим, що в них більше півтонових переходів, тоді як при стисненні однотонних заливок з'являються небажані перешкоди.
Краще стискаються (і з меншими втратами) великі зображення для web і зображень з високим дозволом для друку (200-300 dpi і більш), оскільки в кожному квадраті (8x8 пикселов) переходи виходять м' якшими за рахунок більшого числа квадратів в таких файлах.
Небажано зберігати в JPEG-форматі будь-які зображення, в яких важливі тонкі нюанси перенесення (репродукції) кольорів, оскільки під час стиснення відбувається відкидання колірної інформації.
Цей формат слід використовувати тільки для збереження кінцевого варіанту роботи, тому що кожне подальше збереження приводить до нових втрат (відкиданню) даних.