Tile gif animasi


10

Apakah ada cara untuk menggunakan imagemagic / montage untuk memasang gif animasi yang dilingkarkan (dicampur dengan yang nonanimated)?

Artinya, saya ingin menggabungkan animasi di luar angkasa, bukan dalam waktu. Saya menyadari bahwa jumlah bingkai dan durasinya dalam animasi mungkin membuat mustahil untuk menggabungkan dua animasi dengan rapi. Tapi saya baik-baik saja dengan program membuat perkiraan dan tebakan, dan memperluas / mengulangi frame, selama semua frame ada di beberapa mode.

Saya sudah mencoba

convert *.gif -append output.gif

dan

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

tetapi keduanya memperlakukan gif animasi sebagai gif individu yang tidak beranimasi.

Saya kira saya mungkin bisa menulis skrip untuk memecah animasi yang terpisah dengan bingkai, ulangi / perpanjang loop yang lebih pendek yang diperlukan untuk mencocokkan loop terpanjang, ulangi gif nonanimasi karena banyak frame dalam animasi terpanjang, menjahit bersama frame yang sesuai menjadi satu bingkai besar dengan -append, dan kemudian menggabungkan bingkai besar itu menjadi satu gif besar. Tetapi saya tidak ingin menemukan kembali roda jika ini sudah dimungkinkan oleh beberapa perintah sederhana.

Saya tentu saja terbuka untuk opsi gratis lain selain imagemagick.



2
Saya akan mengambil itu karena mungkin tidak dimaksudkan; sebagai komentar serius. Ya, saya ingin memasang GIF. Namun secara permanen, tidak dalam HTML. Terima kasih atas tautannya. Saya akan menyimpan GIF tertentu untuk digunakan nanti.
tsbertalan

1
@tsbertalan Apakah Anda akhirnya mengetahui hal ini?
Seb Barre

Jawaban:


1

Sepertinya Anda ingin mencocokkan beberapa animasi melalui waktu, tetapi itu akan membutuhkan program untuk membaca setiap frame dan penundaannya, kemudian mengeluarkan frame itu pada beberapa frekuensi periodik hingga penundaan tersebut terpenuhi. misal: 1 frame, delay 1 detik, dan 'frekuensi' Anda adalah 100ms, jadi Anda ingin 10 frame pada 100ms ditulis? Dan kemudian dikonversi menjadi montase linier?

Itu akan membutuhkan skrip program atau besar untuk melakukan pemrosesan semacam itu, dan Anda harus mendefinisikan 'frekuensi' Anda (100 ms di sini).

Tapi ini bekerja dengan baik: (gifsicle adalah sebuah paket, montase adalah bagian dari paket imagemagick)

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

(garis putus-putus untuk dibaca)

Baris pertama memecah gif yang masuk menjadi frame individu (untuk stdout), tetapi dengan lapisan diisi. awalnya, tanpa opsi --unoptimize, itu akan memberikan bingkai pertama, tetapi bingkai berikutnya hanya berisi apa yang berubah setiap kali. Dibuat untuk montages aneh!

Baris kedua membangun output linear, mengambil setiap gambar frame (dari stdin) dan mengaturnya dalam urutan yang Anda tentukan. 'x1' untuk mengaturnya sepanjang garis horizontal.

Anda dapat mengganti nama file tunggal (cool_animation.gif) dengan beberapa, atau bahkan wildcard * .gif.

Saya tidak yakin ini yang Anda cari.


Ketika dimodifikasi menjadi gifsicle --colors=255 DATA.gif | gifsicle --unoptimize | montage -tile x1 - linear_frames.pnguntuk gambar uji Ƭᴇcʜιᴇ007, ini memberi saya imgur.com/a/Likr9 ; tidak persis apa yang saya cari. Saya tidak ingat tujuan awalnya; Saya kira saya mungkin hanya menulis skrip untuk memecahkan semuanya secara eksplisit.
tsbertalan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.