Получив в свои руки графический формат, файлы в котором не
нужно архивировать и разархивировать вручную, пользователи CompuServe были
поначалу очень довольны. Однако через некоторое время появились программы,
которые выводили изображение из GIF-файла на экран прямо по мере получения его
из сети - и для этого, как оказалось, первоначальный вариант формата GIF не
очень-то подходил. Поскольку в CompuServe (как и во многих других местах) платят
за время соединения, мало кому понравится ждать, пока обычный GIF, медленно
ползущий через модем на экран, дорисуется хотя бы до половины, чтобы понять, что
же он собой представляет. Идеальной была бы возможность быстро знакомиться с
содержимым графических файлов, не скачивая их полностью.
В некоторых форматах для этого используется уменьшенная копия
изображения, вставляемая в тот же файл и предназначенная для быстрого
ознакомления с его содержимым. Однако программисты CompuServe, опять-таки в
заботе о компактности файлов, нашли другой выход из положения, довольно
остроумный и притом не требующий никакого дублирования информации. Изменив
порядок следования данных в файле, они заставили картинку рисоваться не только
сверху вниз, но и, если можно так выразиться, "с глубины к
поверхности" - то есть становиться все четче и детальнее по мере подхода из
сети новых данных.
Для этого файл с изображением тасуется при записи так, чтобы
сначала шли все строки пикселов с номерами, кратными восьми (первый проход),
затем четырем (второй проход), потом двум, и, наконец, последний проход - все
оставшиеся строки с нечетными номерами. Во время приема и декодирования такого
файла каждый следующий проход заполняет "дыры" в предыдущих,
постепенно приближая изображение к исходному состоянию. Нечто подобное
используется в телевидении для передачи одного полного кадра за два прохода луча
(так называемая "чересстрочная развертка"). Поэтому такие изображения
были названы чересстрочными (interlaced).
Приняв из сети очередной проход чересстрочного GIF-файла,
броузер не только рисует каждую его строку на своем месте, но и заполняет
копиями предыдущей строки все промежутки между строками (иначе после первого
прохода изображение было бы почти невидимым). Поэтому поначалу чересстрочный GIF
состоит из широких горизонтальных полос, которые постепенно сужаются по мере
проявления изображения.
|