Як конвертувати PNG-смужку в GIF?


12

Отже, я зробив цю анімацію в програмі, однак, схоже, вона не підтримує експорт як послідовність PNG, щоб я міг перетворити її в GIF. Анімація перевищує 100 кадрів, тому збереження кожного зображення по одному займе віки. Однак він підтримує експорт як "смужку", що схоже на кінофільм. Кожна картинка в анімації має однакові розміри. Ось як працює функція «смужка» програми.

Зображення в анімації розміщуються горизонтально, причому перший кадр знаходиться вліво, а останній - у правій частині. Між кадрами немає зазорів, а ім'я файлу зазвичай - це "name_stripX.png", якщо анімація має кадри X. Якби кожен кадр був 32 на 32, а анімація мала 8 кадрів, цей файл мав би ширину 256 та висоту 32.

Ось декілька прикладів виводу, кожен колір заповнює один кадр:

Приклад Вихід

Крім того, щоб трохи прояснити речі, програма називається "Game Maker 8.0".

Відповіді:


16

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

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

Потім ви можете перетворити його в анімацію (використовуйте, -loop 1якщо ви не хочете, щоб вона цикла):

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

Результат:

Вихідні PNG першої команди мають зміщення, включене в них, тому без -page +0+0можливості анімація закінчується так:

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

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

або за допомогою gifsicle

gifsicle -O output.gif -o optimised.gif

РЕДАКТУВАННЯ: Якщо кадри прозорі, ви можете встановити кадри замінити, додавши
-dispose Backgroundпараметр, тож коли кадр утилізується при завантаженні наступного:


Приклад вище зроблено без pageопції, щоб це було чітко показано

Проблема в цьому полягає в тому, що ви, мабуть, не можете значно оптимізувати отримане зображення - тому інший спосіб може зробити кадри непрозорими, щоб наступний кадр охоплював попередній.


Зображення має прозорість, і в основному це просто нанесення наступного кадру на попередній, чи є такий спосіб, щоб я міг зробити так, щоб він намалював наступний кадр над порожнім?
user245115

Зняти прозорість із вихідного зображення найпростіший метод. Але це можна зробити за допомогою більшої кількості параметрів.
david6

@ user245115 - замініть кадри замість накладання - див. редагування.
Вільф
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.