У меня есть несколько файлов AVI, которые я хочу преобразовать в анимированные GIF-файлы с прозрачным фоном для размещения в форме .net Windows. Я могу конвертировать из AVI в анимированные GIF, но по какой-то причине фон анимированного GIF является розовым, а не прозрачным. Есть ли какой-нибудь простой способ избавиться от розовых цветов из получившегося анимированного GIF-файла? Я пробовал ffmpeg, но он также давал розовый цвет. Я попытался ffmpeg -i FINDFILE.avi FINDFILE.gif. Это произвело анимированный GIF, но цвет фона - розовый. Спасибо, что прочитали это.
1 ответ
Попробуйте отредактировать палитру с помощью IrfanView или любой сложной программы для редактирования изображений. Где-то должен быть флажок для "прозрачного фона".
Если вы не можете найти какой-либо инструмент, который работает, возможно, вам придется копать глубже и редактировать двоичный файл. http://www.u229.no/stuff/gifformat/ объясняет формат данных: Интересная часть - это Расширения управления графикой, которые содержат индекс прозрачного цвета и флаг прозрачного цвета в упакованном поле.
Осторожно: каждый кадр может иметь свой собственный GCE. Но каждый блок начинается с сигнатуры из трех байтов \x21\xf9\x04
, поэтому их легко отследить.
Следующий байт после подписи является упакованным полем; бит 0 - флаг прозрачного цвета. Поэтому ищите \x00\x21\xf9\x04
, если значение следующего байта четное: добавьте единицу (установите бит 0 в этом байте).
Сохраните файл, и фон должен быть прозрачным на всех кадрах.
Или ... только что нашел ... взгляните на эту тему: Как сделать прозрачный фон для анимации GIF?