GNU/Linux >> Belajar Linux >  >> Linux

Linux – Animasi Webp Ke Animasi Gif (cli)?

Saya terkejut hari ini karena ternyata betapa sulitnya beralih dari webp animasi ke gif animasi. GIMP 2.8.22 saya dan ImageMagick 7.0.7-21 di linux 4.14.13-1-ARCH sepertinya tidak mendukung format, dan satu-satunya alat yang tersedia di repo adalah libwebp 0.4.1 yang menyertakan alat dekode yang memungkinkan Anda mengekstrak bingkai individual ke beberapa format gambar, tidak ada yang berupa gif (Mungkin ini masalah lisensi?)

Bagaimanapun, saya menggunakan skrip berikut:

#!/bin/bash

DELAY=${DELAY:-10}
LOOP=${LOOP:-0}
r=`realpath $1`
d=`dirname $r`
pushd $d > /dev/null
f=`basename $r`
n=`webpinfo -summary $f | grep frames | sed -e 's/.* ([0-9]*)$/1/'`
pfx=`echo -n $f | sed -e 's/^(.*).webp$/1/'`
if [ -z $pfx ]; then
    pfx=$f
fi

echo "converting $n frames from $f 
working dir $d
file stem '$pfx'"

for ((i=0; i<$n; i++)); do
    webpmux -get frame $i $f -o $pfx.$i.webp
    dwebp $pfx.$i.webp -o $pfx.$i.png
done

convert $pfx.*.png -delay $DELAY -loop $LOOP $pfx.gif
rm $pfx.[0-9]*.png $pfx.[0-9]*.webp
popd > /dev/null

Yang membuat animasi gif dari bingkai yang diekstraksi dari file yang disediakan dalam argumen pertama.

Saya mencobanya pada file ini dan file yang dihasilkan adalah jenis artefak. Apakah formulir yang tepat untuk diposting di forum ini untuk saran perbaikan prosedur/permohonan?

Dan:Jika ada alat khusus untuk konversi ini, silakan bagikan pengetahuan Anda!

Jawaban yang Diterima:

Skrip Anda berfungsi dengan baik, tetapi Anda perlu memberi nol pada nama bingkai individual Anda; jika tidak, itu akan membuat gif dengan bingkai dalam urutan yang campur aduk. Saya memperbaikinya dan mencobanya pada beberapa animasi webp giphy (termasuk contoh Anda) dan hasilnya sesuai dengan yang Anda harapkan.

Di bawah ini hanya skrip Anda dengan dua perubahan. Pertama, for altered yang diubah loop ke nol pad nama file bingkai itu. Kedua, saya menambahkan cek webpinfo lain untuk mengambil durasi bingkai dan menggunakannya (jika> 0) untuk DELAY (secara naif berasumsi bahwa orang tidak menggunakan durasi bingkai variabel):

#!/bin/bash

DELAY=${DELAY:-10}
LOOP=${LOOP:-0}
r=`realpath $1`
d=`dirname $r`
pushd $d > /dev/null
f=`basename $r`
n=`webpinfo -summary $f | grep frames | sed -e 's/.* ([0-9]*)$/1/'`
dur=`webpinfo -summary $f | grep Duration | head -1 |  sed -e 's/.* ([0-9]*)$/1/'`

if (( $dur > 0 )); then
    DELAY = dur
fi

pfx=`echo -n $f | sed -e 's/^(.*).webp$/1/'`
if [ -z $pfx ]; then
    pfx=$f
fi

echo "converting $n frames from $f 
working dir $d
file stem '$pfx'"

for i in $(seq -f "%05g" 1 $n)
do
    webpmux -get frame $i $f -o $pfx.$i.webp
    dwebp $pfx.$i.webp -o $pfx.$i.png
done

convert $pfx.*.png -delay $DELAY -loop $LOOP $pfx.gif
rm $pfx.[0-9]*.png $pfx.[0-9]*.webp
popd > /dev/null

Linux
  1. Klien CLI Tidal – Streaming Musik Tidal Dari Baris Perintah Linux

  2. Penampil pdf CLI untuk linux

  3. Linux - ubah nama host di CLI

  1. Bagaimana Mengubah Strip Png Menjadi Gif?

  2. Pengelola Sambungan CLI Linux?

  3. Bagaimana cara mengkonfigurasi PHP CLI di linux ubuntu untuk dijalankan sebagai www-data?

  1. Instal Animasi Pencil2D di Ubuntu 20.04 LTS

  2. Linux – Apakah Kernel Linux/unix yang Berbeda Dapat Dipertukarkan?

  3. Peek – Perekam Layar Gif Animasi Sederhana untuk Linux