Як формат, створений зовсім не для анімації, підкорив світ, будучи яблуком розбрату в інтернет-просторі.
За більш як 30 років свого існування, GIF зображення стали невід’ємною частиною вебу.
Здається вони не лише не втрачають популярності із часом, а і поступово проникають усюди: згадайте лише нещодавнє оновлення Instagram з можливістю відправляти GIF в особистих повідомленнях.
Та чому майбутнє GIF не таке вже і безхмарне? Щоб розібратися, почнемо з того, що ж таке взагалі GIF.
GIF — це формат обміну графічними даними (англ. Graphics Interchange Format). Він є форматом файлу зображення, що підтримує прозорість і використовує LZW алгоритм стиснення. GIF — це послідовність кадрів, що відтворюються один за іншим із затримкою між ними для створення ілюзії руху. Всі кадри вміщені в одному файлі, який зберігає статичні зображення та інструкцію зі швидкості відтворення.
Однак, цей культовий формат був створений зовсім не для анімації. У свій час, завдяки алгоритму стиснення він був дійсно корисним для завантаження великих зображень за короткий час. І все ж набув популярності GIF саме завдяки підтримці прозорості та анімації. Тим не менш, згодом з’явився PNG що впорався з прозорістю значно краще за нього. Це і зробило GIF таким, яким ми знаємо його сьогодні — анімованим форматом зображення. І сьогодні цей формат можна вважати застарілим та неефективним. Ось чому:
Глибина кольору
GIF підтримує лише 256 кольорів з 24-бітного діапазону RGB. Для порівняння, PNG та JPEG підтримують 16.9 мільйонів кольорів. Взагалі, можливо використати більше, задавши кожному кадру палітру відмінну від попереднього. Але, по-перше, розмір такого файлу буде дуже великим, а по-друге, не всі програми рендерингу зможуть обробити його правильно.
Крім того, GIF використовує бінарний канал, який задає прозорість для кожного пікселя. Це означає, що один піксель може бути або лише прозорим, або лише кольоровим, а отже задати ступінь прозорості не можливо.
Очевидно, що такі обмеження GIF формату значно погіршують якість відображення і є суттєвим мінусом.
Розмір файлу
Зазвичай цей чинник бачимо у списку переваг GIF, але насправді, начебто невелика вага — найпоширеніший міф про цей формат.
Щоб спростувати його, візьмемо будь-який короткий відеоролик та зробимо із нього GIF.
Такий GIF важитиме 3.49 МБ, тому що кожен кадр потрібно зберігати у вигляді окремого зображення. MP4 зберігає декілька ключових кадрів, а кадри між ними рендеряться на його основі. А отже інструкції перетворення одного кадру в інший мінімальні, і тому відео займає лише 622 КБ.
Тобто GIF буде в 5 разів більшим аніж відео. Отже, його функціональність не виправдовує такого великого розміру.
Відображення
Ламаність відображення при повільному з’єднанні спричинена тим, що GIF лише частково відображається при першому запуску. Натомість відео одразу завантажує перші байти й починає програвати їх поки весь ролик ще продовжує завантажуватись.
Крім того, різні браузери іноді по-різному розуміють інструкції зі швидкості програвання GIF.
Все це негативно впливає на сприйняття зображуваного.
Споживання трафіку
Особливо на мобільних телефонах, де швидкість завантаження нижча, і часто використовується досить дорогий мобільний інтернет, сторінка наповнена GIF зображеннями може взагалі не завантажитись, і при цьому ще й використати значну частину ваших мобільних даних.
Вразливість
Як показала практика, додавання довільних даних в кінець GIF файлу ніяк не змінює поведінку програм для перегляду графічних файлів, і будь-якою програмою такий малюнок буде інтерпретовано як правильний GIF. Все що потрібно зробити хакеру, це лише за допомогою якогось шістнадцятирічного редактора додати PHP SHELL-код в кінець правильного GIF-малюнка і завантажити його на сервер. Такий файл пройде будь-які перевірки на правильність, бо він дійсно є правильним файлом малюнка. Він просто містить в кінці якісь дані, які ніяк не впливають на поведінку графічних додатків та розширень. Тому спочатку буде виведено сміття, відповідне текстовій інтерпретації бінарного вмісту малюнка. А потім буде знайдено PHP-дужки, і виконається код, який знаходиться між ними. Таким чином, використовуючи GIF, можна зробити PHP-ін’єкцію. Хоча в нових версіях програмного забезпечення це виправлено, але є багато ПК зі старим софтом які досі вразливі.
Але чому не зважаючи на всі ці вагомі недоліки, GIF все одно править інтернетом?
Однією з основних причин популярності GIF є те, що всі сучасні браузери мають його вбудовану підтримку, і здатні програвати цю анімацію без додаткового встановлення плагінів. На відміну від відео що потребує декількох рядків коду для коректного відображення, GIF вставляється на сторінку як звичайне зображення. Крім того, це один суцільний файл, а значить його легко завантажити й переглядати локально в програвачі.
Тому, всіма вище перерахованими недоліками часто нехтують або через комп’ютерну неосвіченість, або просто через те, що використати GIF значно легше.
Окрім відео, є також альтернативні формати такі як PNG, APNG, WEBP і т. д., але всі вони з різних причин (наприклад тому, що не підтримуються програмами) не змогли замінити GIF.
І поки не з’явиться один, мімікруючий під зображення та сумісний з усіма браузерами формат, який би не мав вище перерахованих недоліків, GIF не втратить своєї популярності.