Banyak pertanyaan yang menanyakan cara membuat animasi gif dari serangkaian gambar png menyarankan untuk menggunakan varian convert
perintah ImageMagick :
convert -delay 2 -loop 0 *.png animated.gif
Namun, saya memiliki beberapa ribu gambar dan karenanya convert
menggunakan semua memori saya, swap, dan kemudian crash. Perangkat lunak alternatif apa yang ada, yang lebih sadar akan memori? Saya bisa menggunakan format terbuka lain jika .gif
tidak didukung, dan saya lebih suka alat CLI.
command-line
software-recommendation
images
conversion
dotancohen
sumber
sumber
convert -delay 2 -loop 0 0*.png animated.gif
hanya akan mengonversi file yang dimulai dengan '0'. Dan seterusnya.Jawaban:
Sepertinya Anda mencoba membuat video. Jika itu masalahnya, maka saya akan menggunakan format video yang tepat.
Dalam hal ini, saya akan menggunakan ffmpeg untuk mengonversi masing-masing file PNG menjadi video H.264. Karena ffmpeg dibuat untuk bekerja dengan video yang bisa memakan waktu berjam-jam, ffmpeg seharusnya tidak memiliki masalah dengan ribuan gambar Anda. Menggunakan H.264 sebagai gif animasi tidak akan menghasilkan peningkatan besar dalam kualitas gambar.
Sesuatu seperti ini seharusnya bekerja untuk Anda:
-framerate 1/2
: Ini mengatur framerate menjadi satu-setengah FPS, atau 2 detik per frame.-i img%04d.png
: Ini memberitahu ffmpeg untuk membaca fileimg0000.png
sekalipunimg9999.png
.-c:v libx264
: Gunakan video codec libx264.-crf <number>
: Pengaturan kualitas. 0 hingga 51. 23 adalah standarnya. 0 adalah benar pengkodean lossless, yang akan menjadi bandwidth yang cukup tinggi. 18 hampir tanpa kehilangan secara visual.-r 30
: Atur framerate output ke 30 FPS. Setiap gambar input akan diduplikasi untuk menghasilkan apa yang Anda tentukan di sini. Anda dapat membiarkan parameter ini mati, dan file output akan berada di framerate input, tetapi film yang dihasilkan tidak ditampilkan dengan benar ketika saya mencobanya sekarang.out.mp4
: Nama file keluaran.Referensi:
sumber
Secara pribadi, saya hanya akan meluncurkannya dalam jumlah file terbatas, bukan sekaligus. Misalnya, sesuatu seperti ini:
sumber
Gunakan
-limit memory 1GiB
untuk membatasi jumlahconvert
penggunaan memori .1000-an gambar akan membuat GIF besar yang sebagian besar komputer akan berjuang untuk ditampilkan. Saya menyimpan animasi GIF saya di bawah 200 gambar bila memungkinkan. Semakin sedikit semakin baik. Jika Anda memberi nomor pada gambar Anda, perintah ini akan menghapus gambar bernomor ganjil
rm *[13579].png
.Jadi di sini adalah alur kerja khas saya untuk membuat animasi GIF dari adegan film:
sumber
Mungkin APNG berguna bagi Anda. Ini didukung oleh beberapa browser , termasuk Firefox tetapi saat ini tidak termasuk Chrome dan IE. Karena ini hanya ekstensi PNG, sangat mudah untuk mengonversi PNG ke APNG. Alat apngasme dapat melakukannya. Tetapi formatnya sangat sederhana sehingga saya baru-baru ini menulis assembler APNG sendiri untuk Sage. Mengadaptasi kode itu akan menjadi alternatif.
sumber
Jika Anda memiliki ribuan png-s, format anigif aneh. Saya akan melakukannya dengan cara ini, menggunakan
avconv
:sumber
gifsicle adalah utilitas baris perintah untuk menangani animasi GIF. Jika Anda ingin menukar memori dengan kecepatan, Anda dapat menggunakan sakelar --conserve-memory.
sumber
Selain jawaban lain: karena Anda ingin menghasilkan file GIF, saya berasumsi Anda ingin menampilkan gambar di halaman web. Jika demikian, saya tidak akan repot mengubah PNG Anda sama sekali. Cukup google untuk "slideshow javascript" dan gunakan salah satu dari jutaan skrip gratis. Atau tulis sendiri, ini benar-benar sepele.
Manfaat melakukannya dengan cara ini adalah:
hanya satu gambar yang dimuat di browser kapan saja, pertunjukan slide dimulai dengan cepat dan tidak mengkonsumsi banyak RAM pada mesin pengguna.
solusi ini menskala jutaan gambar. Atau miliaran, jika Anda cukup sabar untuk menonton semuanya :)
Anda dapat menambahkan kontrol ke halaman Anda untuk menjeda, mundur, mengubah penundaan atau pergi ke bingkai tertentu.
sumber