LINUX.ORG.RU

Сообщения guzich

 

Извлечение кадров из Gif анимации

Форум — Multimedia

Используется утилита gifsicle для разбора анимированного gif насколько мне удалось разобраться, в оптимизированных гифках каждый кадр содержит пиксели различных цветов (цветов не более 256) и прозрачные пиксели (ну или 255 и прозрачный, точно не знаю ,это тонкости) если пиксель не изменился по отношению к предыдущему кадру. Через эти прозрачные пиксели видны пиксели предыдущих кадров (в каждом из которых могут быть пиксели из своих 256 цветов (локальная цветовая таблица кадра) ),то есть на самом деле в момент показа определенного кадра мы видим гораздо больше чем 256 цветов, а сохранить отдельный кадр можно только с 256 цветами. Можно выдернуть кадр как есть с локальной цветовой таблицей данного кадра но тогда прозрачные пиксели будут без цвета

gifsicle 1.gif «#8» > 8.gif получаем https://www.dropbox.com/s/9p9svto2bqm564s/8.gif?dl=0

можно привести все кадры к одной глобальной таблице цветов и извлекать оттуда, но тогда вся анимация будет использовать только 256 цветов, результат конечно лучше но потери цвета значительные

gifsicle --colors=256 2.gif > 1.gif вся анимация из 256 цветов: https://www.dropbox.com/s/luv8w2962f5crrp/255colors.gif?dl=0

а теперь из нее извлекаем например 8-й кадр gifsicle --unoptimize 1.gif «#8» > 8_.gif и отдельный кадр https://www.dropbox.com/s/khcqrccaty8bx1s/8_.gif?dl=0

Но точно должно быть решение без таких потерь цвета, конечно нужно конвертировать изображение в jpeg например. Использовать для этого утилицу convert из imagemagick. Но как пытался, прозрачные пиксели остаются, как сделать чтобы видные были под ними предыдущие кадры при конвертации в jpeg не понятно

Под виндой есть программка http://www.easy2convert.com/gif2jpg/ - она отлично сохраняет каждый кадр в jpeg без потерь цвета, да и в фотошопе, если открыть, каждый кадр отображается нормально, значит и с помощью линуксовых утилит как-то можно это сделать.

 , ,

guzich
()

RSS подписка на новые темы