Saya ingin membuat .gif
gambar animasi dari serangkaian gambar yang diberikan .jpg
.
Saya lebih suka melakukannya dari baris perintah, jadi alat baris perintah akan sangat diterima.
command-line
image-processing
gif
Maythux
sumber
sumber
Jawaban:
Anda dapat menggunakan paket ImageMagick . Instal menggunakan perintah:
Sekarang Anda dapat membuat
gif
dari dari sejumlah gambar (jpg
) menggunakan:sumber
-resize 50%
.-deconstruct
. Saya juga menemukan bahwa ImageMagick sangat haus akan memori, lihat benchmark: askubuntu.com/a/1102183/52975convert -delay 0 -loop 0 *.tif myanimated.gif
bekerja dengan baik, pada 720 file tifUntuk menyelesaikan jawaban @ Mayayux:
Untuk menghindari menghasilkan file yang sangat besar, Anda dapat menggunakan
-resize
opsi:Dalam kasus saya, saya memiliki 4608x3456 gambar dan gif yang dihasilkan lebih dari 300M untuk 32 gambar
atau
Jaga * .jpg
*.jpg
menyebalkan sedikit ketika berhadapan dengan nilai numerik, Anda dapat menghasilkan gif dengan foto yang tidak disortir.Karena pemotretan diambil dengan sangat cepat (10 / dtk) mereka semua memiliki waktu modifikasi yang sama dan Anda tidak dapat memperdayainya
ls -t
misalnya. Di ubuntu, Anda dapat menggunakanls -v
sesuatu, seperti:Mengurutkan secara numerik cukup rumit pada Mac OS X, saya kira Anda harus membuat skrip khusus.
sumber
find
,,sort
brace ekspansi, dan sebagainya. Thels
Alat ini sangat cocok untuk hal semacam ini. Gunakanfind
. Ada sedikit kurva belajar, tetapi itu sepadan.Saya tidak memiliki reputasi yang cukup untuk berkomentar tetapi alih-alih memodifikasi nama file Anda dapat menggunakan globbing untuk membuat shell Anda memperluas nama file
sumber
GIMP
Anda dapat dengan mudah melakukan ini dengan GIMP. Pertama instal jika belum diinstal dengan
Menciptakan gif
Dari GIMP, buka File -> Open as Layers untuk membuka semua png pada layer mereka sendiri.
Dari sini Anda dapat melakukan pengeditan pada layer dan, setelah selesai, buka File -> Export As . Dari dialog pastikan untuk mengatur jenis file ke GIF.
Dari sana Anda akan pergi ke opsi ekspor GIF. Centang opsi ' As Animation ' dan atur parameter sesuai kebutuhan.
sumber
solusi ffmeg + data uji
Pada Ubuntu 18.10, ffpmeg 4.0.2-2, ImageMagick 6.9.10-8, saya telah menemukan bahwa ffmpeg jauh lebih cepat dan menggunakan lebih sedikit memori .
Perintah konversi yang paling sederhana adalah:
Anda bisa mendapatkan data pengujian saya dengan:
Data pengujian dihasilkan dengan: https://stackoverflow.com/questions/3191978/how-to-use-glut-opengl-to-render-to-a-file/14324292#14324292 dan berisi 256 1024x1024 gambar PNG.
Dan berikut ini adalah data uji yang dapat Anda hasilkan langsung di peramban Anda sekarang juga! https://stackoverflow.com/questions/19235286/convert-html5-canvas-afterence-to-a-video-file/57153718#57153718
ffmpeg
Opsi penting yang ingin saya soroti adalah:-pattern_type glob
: cara mudah untuk memilih gambar-framerate 60
: asumsikan 60 FPS pada gambar input, dan hasilkan FPS yang sama.ffmpeg
tidak dapat mengetahui sebaliknya, karena tidak ada data FPS dalam gambar karena ada dalam format video.256 frame input membutuhkan waktu sekitar 4 detik untuk selesai.
-r 15
: pilihan. Pilih satu setiap 4 gambar jadi kurangi ukuran (4 == 60 / 15
).Dengannya,
identify out.gif
dikatakan bahwa GIF hanya berisi 64 frame.Masih butuh 4 detik untuk bermain, jadi penundaan diubah untuk membuat semuanya cocok.
-vf scale=512:-1
: pilihan. Atur lebar, skala tinggi secara proporsional, biasanya untuk mengurangi ukuran dan menghemat ruang.Agar ImageMagick berfungsi, pertama-tama saya harus memodifikasi batas disk dan memorinya
/etc/ImageMagick-6/policy.xml
seperti yang dijelaskan di: https://superuser.com/questions/1178666/imagemagick-convert-quvert-quits-after-some-pagesLihat juga:
ImageMagick vs ffmpeg benchmark
Saya membandingkan perintah:
Perintah dibuat untuk menghasilkan keluaran yang sedekat mungkin agar perbandingan itu valid:
/usr/bin/time -v
: digunakan untuk menemukan penggunaan memori maksimum seperti yang dijelaskan di: https://stackoverflow.com/questions/774556/peak-memory-usage-of-a-linux-unix-process-deconstruct
: Gambar GIF dapat berisi hanya persegi panjang yang dimodifikasi minimal dari bingkai sebelumnya untuk membuat GIF lebih kecil.ffmpeg
menghitung perbedaan tersebut secara default, tetapi ImageMagick tidak, kecuali-deconstruct
digunakan.Anda pada dasarnya ingin menggunakan opsi itu setiap kali dengan ImageMagick.
Kita dapat mengamati perbedaannya dengan:
Dengan versi terkompresi, semua frame memiliki ukuran lebih kecil dari yang awal, misalnya:
Dalam contoh ini, frame kedua hanya
516x516
bukan 1024x1024 penuh, dan ditempatkan pada offset252+257
. Karena itu hanya mengandung segitiga tengah.Lihat juga: bagaimana saya bisa mengubah ukuran file GIF animasi menggunakan ImageMagick?
-delay
: nilai yang cocok dengan 60FPS dariffmpeg
. Seharusnya tidak masalah untuk kinerja konversi, tetapi saya tidak ingin mengambil risiko itu.GIF keluaran memiliki ukuran yang sama dan terlihat identik secara visual.
Kami mendapatkan untuk ImageMagick:
dan untuk ffmpeg:
dari mana kita melihat bahwa:
Perangkat keras uji: Laptop Lenovo ThinkPad P51 , Intel Core i7-7820HQ, 32GB (16 + 16) DDR4 2400MHz SODIMM, SSD PCIe TLC OPAL2 512GB.
sumber
-r
dan-v
memerintahkan, masih keluaran gif yang kualitasnya jauh lebih rendah daripada file png asli. Bagaimana menjaga kualitas gif yang sama dengan file png yang diberikan?-framerate 60 -r 60
. Periksa GIF yang dihasilkan dan masukkan gambar dengan alat ImageMagick inginidentify
mencoba dan mencari tahu apa yang sedang terjadi.Anda dapat menggunakan program yang disebut konversi yang disertakan dalam paket imagemagick. Ini adalah command line driven, tetapi sangat mudah digunakan. Instal baik melalui pusat perangkat lunak, atau pergi ke prompt perintah dan ketik
Sekarang untuk membuat .gif.
* Perhatikan contoh di atas langsung dari Contoh Gambar Magick
sumber
convert -delay 20 -loop 0 *.png out.gif
membuat GIF pengulangan.