JPEG, PNG, GIF – що це! Ідеальний формат шукають роками, тому що мало хто розуміє, як вони працюють. Подивимося алгоритми стиснення зображень, щоб знати – який формат вибрати.
JPEG
Формат перевірений часом. Як же він працює і для чого хороший?
JPEG стискає зображення квадратами 8 * 8 пікселів, а потім робить щось божевільне і математичне. Перетворює пікселі в кожному блоці з RGB в YCbCr. З технічної точки зору, JPEG перетворює інформацію з просторової області в частотну.
Підходить: для стиснення зображень з великою кількістю кольорів і плавними переходами між ними.
Не підходить: для об’єктів з чіткими кордонами на зображенні.
GIF
Формат GIF стискає зображення за допомогою алгоритму LZW. Він простіший, ніж магічна математика в JPEG. Алгоритм LZW сканує зображення і генерує короткі коди для повторюваних частин, а потім скорочує їх. Ще у GIF є пара фіч: прозорість і підтримка анімації, але … Цей формат підтримує тільки 256 кольорів.
Підходить: для стиснення зображень з повторюваними даними. Зображення з різкими переходами зберігаються без втрат.
Не підходить: для зображень з великою кількістю кольорів. Стиснення призводить до пастеризації.
Сильні сторони GIF і JPEG доповнюють один одного – вони були чудовою командою в еру «молодого інтернету». Але проблеми з патентом на LZW спонукали до створення нових форматів.
PNG
PNG як GIF, але краще:
- Немає обмеження на 256 кольорів.
- Є підтримка альфа-каналу (для створення часткової прозорості).
- Підходить практично у всіх ситуаціях.
Як працює PNG?
Алгоритм стиснення PNG зменшує обсяг даних. Він передбачає, що кожен наступний піксель схожий на попередній. Якщо це підтверджується – зберігає різницю між припущенням і фактичним значенням. Маленькі числа займають менше місця.
Вирізає повторення за допомогою алгоритму LZ77. Так-так, для GIF – LZW, а для PNG – LZ77. Так уникають проблем з патентом.
Використовує алгоритм кодування Хаффмана. Генерує короткі коди для поширених значень.
PNG краще, ніж GIF (майже завжди). Гірше, ніж JPEG – для фотографій. Сміливо використовуємо PNG для зображень з чіткими фігурами, повторюваними даними і візерунками.
На момент написання статті JPEG, GIF і PNG – єдині формати з універсальної підтримкою. Тільки їх розробники можуть реально використовувати. Однак нові формати вже тут і гідні уваги.