Jump to content

    

Прозрачность в GIF картинке

Приветствую.  Появилась задача сделать показ GIF анимации.  Сделали файл, но с просмотром что-то не то. Если фон задан, то все показывает нормально, но что под фоном, соотв. не видно, если фон убирают - на компе все ок, у меня все смазывается в непойми что. Задача - как показывать  "прозрачную анимацию", пошел вспоминать данный ормат и уперся в стенку, а именно, в индексированной таблице цветов только 3 байта цвета, соотв, куда "сунуть" альфу? Или альфа по-любому там должна быть 0 (т.е. полностью прозрачна), если индекс "прозрачного" цвета указывает на данную позицию в таблице?  И вообще, че-то не понятно мне, как 24 бит цвет сделать прозрачным?  Может кто более осведомлен?

Share this post


Link to post
Share on other sites

Поскольку прозрачность монохромна, полутоновую можно сделать только рандомизацией. Есть APNG, но работать будет не везде, потому что он участник войны форматов.

Share this post


Link to post
Share on other sites

а со статическими GIF что получается у вас ?

вот к примеру создал две тестовых ссылка

Share this post


Link to post
Share on other sites
11 часов назад, Plain сказал:

Поскольку прозрачность монохромна, полутоновую можно сделать только рандомизацией. Есть APNG,

Не понял - прозрачность - это всего-лишь коэффициент от 0-полная до 255 - непрозрачно, причем тут монохром??

Мне другое интересно, например в одной картинке, как мне заявили - с прозрачностью, Transparent Index=255, по значениям палитры там 255,255,255. В другой картинке индекс 250 и значения 140,38,190  Как понять, какой коэффициент альфа канала для этих картинок? В том и другом случае флаг прозрачности установлен.

Edited by mantech

Share this post


Link to post
Share on other sites
10 часов назад, megajohn сказал:

вот к примеру создал две тестовых ссылка

Проверю... 

Share this post


Link to post
Share on other sites
30 минут назад, mantech сказал:

Не понял - прозрачность - это всего-лишь коэффициент от 0-полная до 255 - непрозрачно, причем тут монохром?

Потому что Вы очевидно ещё на что-то надеетесь, но зря — нет там никакого альфа, точка либо на 100% прозрачна, либо на 100% нет. Поскольку прозрачность является последующим довеском к формату, можно объявить ею один раз любой из 256 указателей, но при этом то, что по нему было записано, станет игнорироваться.

Share this post


Link to post
Share on other sites

Вообщем отвечаю сам себе, неправильно обрабатывался флаг работы с картинкой

[04] — 
    (000) – зарезервировано. Рекомендуется заполнять нулями.
    (001) — метод обработки. Определяет, что делать после отображения. 
                0 – к картинке не будет применяться никакой обработки
                1 – картинка останется без изменений
                2 – картинка затрется фоном
                3 – восстановится изображение под картинкой
                4-7 – не определены
    (0) – флаг ввода пользователя. Если 1, то для продолжения обработки изображения требуется реакция пользователя.
    (0) – флаг цвета прозрачности. Указывает, будет ли какой-нибудь цвет использоваться как прозрачный.

 

Состояния 1 и 2 обрабатывались как 0 поэтому и происходила "мешанина", с прозрачностью все было норм...

Edited by mantech

Share this post


Link to post
Share on other sites

Если её значение совпадает со значением, указанным в соответствующем поле GCE.

 

Не понятно, в чём проблема. Для создания и воспроизведения GIF ничего изобретать не требуется, потому что давно существует куча программ, просто замените неисправную.

Share this post


Link to post
Share on other sites
20 минут назад, Plain сказал:

просто замените неисправную.

Это декодер в моем проекте, зачем чего-то менять, если надо пару строчек добавить было... Предпочитаю разобраться в своем, чем копипастить непонятно что и потом мучительно тестировать баги..

Edited by mantech

Share this post


Link to post
Share on other sites
2 hours ago, mantech said:

Это декодер в моем проекте

С нуля писали или что-то за основу брали?

Share this post


Link to post
Share on other sites
6 часов назад, Integro сказал:

С нуля писали или что-то за основу брали?

Наверно что-то брал, несколько кусочков, но половина точно самописная была... Проект давнишний, подзабылось уже.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this