Как преобразовать полосу PNG в GIF?

Так, я сделал эту анимацию в программе, однако, это, кажется, не поддерживает экспорт как последовательность PNG, таким образом, я мог преобразовать ее в GIF. Анимация является более чем 100 кадрами, настолько сохраняющими каждый образ, один за другим возьмет возрасты. Однако это поддерживает экспорт как "полосу", которая похожа на фильм фильма. Каждое изображение в анимации имеет те же размеры. Вот то, как функция "полосы" программы работает.

Изображения в анимации сложены горизонтально, при этом первый кадр является крайне левым в то время как последний кадр, являющийся крайним правым. Между кадрами нет никаких разрывов, и имя файла обычно является "name_stripX.png", если анимация имеет X кадров. Если бы каждый кадр составлял 32 на 32, и анимация имела 8 кадров, то этот файл имел бы ширину 256 и высоту 32.

Вот некоторый вывод в качестве примера, каждый цвет заполняет один кадр:

Example Output

Кроме того, только для очистки вещей немного больше программу называют "Игровым Производителем 8.0".

11
задан 13 June 2015 в 14:19

1 ответ

Можно использовать ImageMagick для преобразования изображений переменными способами, и он должен смочь к этому довольно легко. Сначала можно развестись в к частям (original.png будучи исходным изображением, и в этом случае 32x32 пикселя в размере):

convert original.png -crop 32x32 parts-%02d.png

Можно затем преобразовать его в анимацию (использование -loop 1 если Вы не хотите, чтобы это циклично выполнилось):

convert -loop 0 -page +0+0 ./parts*.png output.gif

Получающийся в:

Выводу PNGs первой команды включали смещение в них, таким образом, без -page +0+0 опция анимация заканчивается как:

Там варьируются другие опции, которые можно включать (главным образом во вторую команду), такой как -delay и т.д. - можно также оптимизировать анимацию, таким образом, это меньше (и быстрее загрузить/представить) - например, одолженный отсюда:

convert output.gif -fuzz 10% -layers Optimize optimised.gif

или использование gifsicle

gifsicle -O output.gif -o optimised.gif

Править: Если кадры прозрачны, можно установить кадры для замены путем добавления
-dispose Background опция, поэтому когда от кадра избавляются, когда следующий загружается:


Пример выше обошедшегося без page опция, таким образом, это показывает ясно

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

16
ответ дан 23 November 2019 в 04:01

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

Похожие вопросы: