Saya menggunakan ImageMagick untuk mengubah koleksi png menjadi gif tunggal. Saya ingin gif ini berputar secepat mungkin.
Ini kira-kira hasil yang saya harapkan (milik Wikipedia ):
Ini adalah output yang saya dapatkan:
Di browser saya (Firefox 17), gif yang diharapkan berjalan dua kali lebih cepat dari gif yang sebenarnya. Ini mengejutkan saya, karena saya menetapkan bahwa setiap frame harus memiliki 0 penundaan.
Pertama saya membuat 36 pngs dengan meledakkan gif yang dipinjam dari Wikipedia:
--caution: command generates 36 pngs
convert.exe newton.gif newton_%d.png
Kemudian saya biasa coalesce
menggabungkan png menjadi satu gif.
convert.exe -dispose none -delay 0 newton_%d.png[0-35] -coalesce output.gif
identify
menegaskan bahwa setiap frame tidak memiliki penundaan:
identify.exe -format "%T, " output.gif
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Ini, pada kenyataannya, lebih sedikit keterlambatan dari aslinya:
identify.exe -format "%T, " newton.gif
5, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2,
Gif aktual memiliki lebih sedikit waktu tunda daripada gif yang diharapkan. Jadi mengapa gif yang diharapkan dua kali lebih cepat dari gif yang sebenarnya?
sumber
-delay 2
.Jawaban:
Saya bereksperimen dan membuat versi 10ms (delay = 1).
Tampaknya program-program yang membuat gif cenderung untuk tidak menghormati tingkat keseratus detik dari seratus detik. Sebaliknya, mereka menggunakan nilai yang jauh lebih besar daripada nilai kecil yang Anda pilih.
Saya tidak bisa mengomentari alasan mengapa mereka melakukan ini. Saya telah menemukan lebih dari satu alasan, dan mungkin saja itu semua spekulasi.
Secara umum, saya akan merekomendasikan Anda menggunakan penundaan setidaknya dua ratus detik dalam semua kasus.
Sumber (yang menunjukkan bagaimana ada beberapa alasan untuk ini. Beberapa relatif tua):
sumber
Sepertinya @DavidMah benar. Di sistem Linux saya, penundaan minimum adalah 0,5:
Untuk beberapa alasan, gambar tampaknya tidak ditampilkan dengan benar di browser saya. Menggunakan penampil gambar lokal (
eom
), gambar 1 lambat seperti yang ada di pertanyaan asli dan yang lain lebih cepat dari wikipedia. Saya tetap memposting kalau-kalau itu masalah khusus untuk browser saya. Bagaimanapun, Anda harus mendapatkan kecepatan yang lebih baik jika Anda mencoba perintah yang diposting di atas.UPDATE: Tampaknya ada 2 masalah. Browser (setidaknya y firefox dan chromium yang berjalan di Linux) tidak dapat menampilkan gif yang dibuat dengan penundaan <1.5. 1,5 berfungsi dengan baik, 1,4 lambat. Penampil gambar saya dapat mengatasi keterlambatan 0,5 ke atas. Coba unduh salah satu gambar di atas dan buka di penampil gambar favorit Anda. Lihat juga ini:
UPDATE2: @DavidMah menunjukkan dalam komentar di bawah ini bahwa nilai desimal dibulatkan ke bilangan bulat terdekat. Jadi, 1.4 dibulatkan menjadi 1 yang terlalu lambat sementara 1,5 dibulatkan menjadi 2 yang OK.
sumber
Saya sudah lebih sukses menggunakan
XxY
notasi keterlambatan, pada dasarnyax
adalah seperti/
, jadi jika Anda menentukan-delay 1x20
, frame ditampilkan selama 1 / 20th per detik.sumber