Я использую преобразование ImageMagick, чтобы взять набор PNG и преобразовать в GIF. Я использую команду

convert -delay 10  -loop 0 *.png out.gif

Мне нравятся результаты, так как визуальное качество незначительно падает, но проблема, с которой я столкнулся, заключается в том, что в моих PNG-данных есть прозрачные данные: каждый кадр кажется не отдельным изображением, а вместо этого везде, где был прозрачным, вы могли видеть данные предыдущих изображений.

Например, если у вас шарик катится слева направо, а фон прозрачный, вы увидите все предыдущие кадры, в которых находился шарик.

Как я могу справиться с этим? Я хотел бы, чтобы GIF сохранял прозрачность, если это возможно (в противном случае, просто сделайте его предварительно определенным цветом), но я бы хотел правильную анимацию.

1 ответ1

3

Проверьте опцию dispose в ImageMagick для установки того, как предыдущий кадр удаляется (или нет) до рисования следующего кадра.

Метод удаления слоя определяет способ изменения каждого отображаемого изображения после завершения отображения текущего «кадра» анимации (после периода «задержки»), но до наложения следующего кадра в анимации. дисплей.

   Undefined   0  No disposal specified (equivalent to 'none').
   None        1  Do not dispose, just overlay next frame image.
   Background  2  Clear the frame area with the background color.
   Previous    3  Clear to the image prior to this frames overlay.

По умолчанию, я считаю, что он выбирает "Undefined", что эквивалентно "None", что означает, что он не располагает предыдущим кадром.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .