Как прозрачность включена в формат изображения Gif

GIF89a поддерживает прозрачность, назначая индекс в качестве прозрачной плитки. Он поддерживает только полную прозрачность, то есть переменную прозрачность (как в случае PNG) не поддерживает.

Я попытался прочитать Псевдо RFC для формата GIF89a, который содержит только два упоминания о прозрачности во всем документе. А именно:-

  • Флаг прозрачности
  • Индекс прозрачности

и описание двух вышеприведенных не самое интуитивно понятное.

На странице гифка в Википедии указано, что прозрачная плитка с индексом = 16 (в палитре 256) всегда назначается прозрачной плиткой/индексом. Но затем он указывает «Единственными цветовыми индексами, появляющимися в данных изображения, являются десятичные числа 40 и 255, которые Глобальная таблица цветов сопоставляет с черным и белым соответственно.», что заставило меня поверить, что я, вероятно, неправильно истолковываю информацию, доступную на странице (поскольку я ранее видел значения пикселей индекс < 40 в изображениях).

Вопрос:-

  • Как прозрачность включена в изображения .gif (89a)? Это постоянный индекс в палитре всегда имеет значение прозрачности?
  • Если да, то остается ли палитра неизменной, когда изображение не имеет прозрачные области, и значит ли это, что мы можем использовать только 255 уникальных index (поскольку 1 индекс всегда присваивается прозрачной плитке)?

P.S.:- Буду признателен, если кто-нибудь добавит, как включается прозрачность? Использует ли он альфа-плитку (например, в RGBA или LA) или удаляет цвет из этого пикселя, чтобы сделать его прозрачным?

Применение градиента к изображению с помощью CSS
Применение градиента к изображению с помощью CSS
Здравствуйте, братья и сестры, как дела? Недавно я застрял на применении градиента к изображению. Я применял это много раз, но иногда наши требования...
Получение URL-адреса изображения курса в Moodle с помощью PHP
Получение URL-адреса изображения курса в Moodle с помощью PHP
Moodle - это популярная система управления обучением с открытым исходным кодом, используемая многими учебными заведениями и организациями по всему...
4
0
500
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

How is transparency incorporated in .gif (89a) images? Is a constant index in the palette always given a value of transparent?

Нет.

Флаг прозрачности TF просто указывает, имеет ли индекс прозрачности TI какое-либо значение для кадра.

Если TF == true, то определенный индекс цвета в текущей (глобальной или локальной) палитре считается прозрачным при объединении текущего кадра с остальной частью изображения. Этот индекс хранится в TI.

If yes, then does the palette stays the same when an image has no transparent regions, and does that mean we only get to use 255 unique index (as 1 index is always given to transparent tile)?

Когда изображение не имеет прозрачных областей, значения TF == false и TI обычно являются мусором, поэтому они не интерпретируются загрузчиками GIF.

As a self-proclaimed GIF expert I tried to document the inner workings of GIF as tersely as I could in the docs and the source code of this tiny loader.

[УПД:]

So, does that mean transparency is only included if the .gif file has frames. Meaning it is not a single image, but a sequence of images?

Нет. Даже однокадровый GIF может содержать заголовок Graphics Control, так что нет.

Does GIF have a fixed palette of 256 colors, meaning the palette could not store more/less then that color range. I am asking this as you mentioned, that in a B/W image, only two color exists black and white, then what happens to the rest of the palette index? or like how does GIF format manages lower color spaces?

GIF поддерживает палитры любого размера, который является степенью 2 и находится в диапазоне от 2 до 256, что дает: 2, 4, 8, 16, 32, 64, 128 или 256.

Размер палитры контролируется биты от 0 до 2 поля флагов в глобальном заголовке GIF.

Значит ли это, что прозрачность включается только в том случае, если в файле .gif есть рамки. То есть это не одно изображение, а последовательность изображений?

Vasu Deo.S 22.07.2019 05:12

Во-вторых, не могли бы вы уточнить эту строку вопроса: - "Единственными цветовыми индексами, появляющимися в данных изображения, являются десятичные числа 40 и 255, которые Глобальная таблица цветов сопоставляет с черным и белым соответственно."

Vasu Deo.S 22.07.2019 05:13

@VasuDeo.S Не могли бы вы прислать мне этот GIF, чтобы я мог его проанализировать? Я обновлю свой ответ, когда это будет сделано.

hidefromkgb 22.07.2019 11:53

на самом деле у меня нет гифки. Я задаю этот вопрос с концептуальной точки зрения, просто для знания. Я хочу улучшить свое понимание форматов изображений, таких как .png, .gif, .jpg и т. д.

Vasu Deo.S 22.07.2019 12:03

@VasuDeo.S А, понятно. GIF, о котором рассказывает Википедия, был сгенерирован какой-то ранней сборкой MS Paint, которая всегда выделяет палитру из 256 цветов, несмотря ни на что, что, безусловно, является пустой тратой места, учитывая, что целевой GIF имеет только 2 цвета.

hidefromkgb 22.07.2019 12:11

Спасибо(+1) Это породило новые сомнения. Имеет ли GIF фиксированную палитру из 256 цветов, что означает, что палитра не может хранить больше/меньше этого цветового диапазона. Я спрашиваю об этом, как вы упомянули, что в черно-белом изображении существует только два цвета: черный и белый, тогда что происходит с остальной частью индекса палитры? или как формат GIF управляет нижними цветовыми пространствами?

Vasu Deo.S 22.07.2019 12:31

Давайте продолжить обсуждение в чате.

Vasu Deo.S 22.07.2019 13:25

Другие вопросы по теме