Bagaimana cara mengubah strip PNG ke GIF?

12

Jadi, saya membuat animasi ini dalam sebuah program, namun, sepertinya tidak mendukung ekspor sebagai urutan PNG sehingga saya bisa mengubahnya menjadi GIF. Animasi ini lebih dari 100 bingkai sehingga menyimpan setiap gambar satu per satu akan memakan waktu lama. Namun, mendukung ekspor sebagai "strip", yang seperti film film. Setiap gambar dalam animasi memiliki dimensi yang sama. Inilah cara kerja fitur "strip" program.

Gambar dalam animasi ditumpuk secara horizontal, frame pertama paling kiri sedangkan frame terakhir paling kanan. Tidak ada celah di antara frame, dan nama file biasanya adalah "name_stripX.png" jika animasi memiliki frame X. Jika setiap frame berukuran 32 kali 32 dan animasi memiliki 8 frame, file ini akan memiliki lebar 256 dan tinggi 32.

Berikut adalah beberapa contoh output, setiap warna mengisi dalam satu bingkai:

Contoh Output

Selain itu, hanya untuk menjernihkan semuanya sedikit, program ini disebut "Game Maker 8.0."

pengguna245115
sumber

Jawaban:

16

Anda dapat menggunakan ImageMagick untuk mengonversi gambar dengan berbagai cara, dan ini seharusnya bisa dilakukan dengan mudah. Pertama, Anda dapat membagi menjadi beberapa bagian ( original.pngmenjadi gambar sumber, dan dalam hal ini ukurannya 32x32 piksel):

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

Anda kemudian dapat mengubahnya menjadi animasi (gunakan -loop 1jika Anda tidak ingin lingkaran):

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

Yang menghasilkan:

PNG keluaran dari perintah pertama memiliki offset yang disertakan di dalamnya, jadi tanpa -page +0+0opsi animasi berakhir seperti:

Ada beragam pilihan lain yang dapat Anda sertakan (terutama dalam perintah kedua), seperti -delaydll - Anda juga dapat mengoptimalkan animasi sehingga lebih kecil (dan lebih cepat memuat / me-render) - mis. Dipinjam dari sini :

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

atau menggunakan gifsicle

gifsicle -O output.gif -o optimised.gif

EDIT: Jika bingkai transparan, Anda dapat mengatur bingkai untuk mengganti dengan menambahkan
-dispose Backgroundopsi, jadi ketika bingkai dibuang ketika yang berikutnya dimuat:


Contoh di atas dilakukan tanpa pageopsi sehingga terlihat jelas

Masalah dengan ini adalah Anda mungkin tidak dapat mengoptimalkan gambar yang dihasilkan saat itu - jadi cara lain mungkin membuat frame buram sehingga frame berikutnya mencakup yang sebelumnya.

Wilf
sumber
Gambar memiliki transparansi, dan pada dasarnya itu hanya menggambar bingkai berikutnya dari yang sebelumnya, apakah ada cara saya bisa membuatnya sehingga menarik bingkai berikutnya lebih dari yang kosong?
user245115
Hapus transparansi dari gambar sumber adalah metode termudah. Tapi itu bisa dilakukan dengan lebih banyak parameter.
david6
@ user245115 - ganti bingkai alih-alih overlay - lihat edit.
Wilf