Gif animate con piastrelle


10

Esiste un modo per usare imagemagic / montage per affiancare gif animate in loop (mescolate a quelle non animate)?

Cioè, voglio concatenare le animazioni nello spazio, non nel tempo. Mi rendo conto che il numero di fotogrammi e la loro durata nell'animazione potrebbero rendere impossibile combinare ordinatamente due animazioni. Ma sto bene con il programma che fa approssimazioni e ipotesi, e che estende / ripete i frame, purché tutti i frame siano lì in qualche modo.

ho provato

convert *.gif -append output.gif

e

montage *.gif -mode concatenate -tile x1 output.gif

ma entrambi trattano le gif animate come singole singole non animate.

Suppongo che potrei probabilmente scrivere una sceneggiatura per spezzare quelle animate per fotogrammi, ripetere / estendere loop più corti se necessario per abbinare il ciclo più lungo, ripetere le gif non animate per il numero di fotogrammi presenti nel più lungo animato, unire i fotogrammi corrispondenti in singoli fotogrammi grandi con -appende quindi combinare quei fotogrammi grandi in un'unica grande gif. Ma non voglio reinventare la ruota se questo è già possibile con un semplice comando.

Sono ovviamente aperto ad altre opzioni gratuite oltre a imagemagick.



2
Lo prenderò come probabilmente non era previsto; come commento serio. Sì, voglio affiancare le GIF. Ma permanentemente, non in HTML. Grazie per il link. Salverò quella particolare GIF per un uso successivo.
Tsbertalan,

1
@tsbertalan Alla fine l'hai capito?
Seb Barre,

Risposte:


1

Sembra che tu voglia abbinare diverse animazioni nel tempo, ma ci vorrà un programma per leggere ogni fotogramma e il suo ritardo, quindi emettere quel fotogramma a una frequenza periodica fino a quando il ritardo non viene soddisfatto. ad esempio: 1 fotogramma, ritardo di 1 secondo e la 'frequenza' è 100 ms, quindi vorresti 10 fotogrammi a 100 ms scritti? E poi convertito in un montaggio lineare?

Ciò richiederebbe un programma o uno script pesante per eseguire quel tipo di elaborazione, e dovresti definire la tua "frequenza" (100 ms qui).

Ma funziona bene: (gifsicle è un pacchetto, il montaggio fa parte del pacchetto imagemagick)

gifsicle --unoptimize cool_animation.gif | \
  montage -tile x1 - linear_frames.png

(linea spezzata per leggibilità)

La prima riga suddivide la gif in entrata in singoli fotogrammi (in stdout), ma con i livelli compilati. inizialmente, senza l'opzione --unoptimize, darebbe il primo fotogramma, ma i fotogrammi successivi contenevano solo ciò che cambiava ogni volta. Realizzato per strani montaggi!

La seconda riga crea l'output lineare, prendendo ogni immagine di frame (dallo stdin) e disponendoli nell'ordine specificato. 'x1' per disporli lungo una linea orizzontale.

È possibile sostituire il singolo nome file (cool_animation.gif) con diversi o anche un carattere jolly * .gif.

Non sono sicuro che sia quello che stai cercando.


Se modificato in gifsicle --colors=255 DATA.gif | gifsicle --unoptimize | montage -tile x1 - linear_frames.pngper l'immagine di prova di Ƭᴇcʜιᴇ007, questo mi dà imgur.com/a/Likr9 ; non è esattamente quello che sto cercando. Non ricordo lo scopo originale; Suppongo che probabilmente ho appena scritto una sceneggiatura per spiegarla esplicitamente.
Tsbertalan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.