GNU/Linux >> Linux Esercitazione >  >> Linux

Linux - Animazione Webp in animazione Gif (cli)?

Oggi sono stato sorpreso di scoprire quanto sia difficile passare da un webp animazione in gif animazione. Il mio GIMP 2.8.22 e ImageMagick 7.0.7-21 su linux 4.14.13-1-ARCH non sembra supportare il formato e l'unico strumento disponibile nei repository sembra essere libwebp 0.4.1 che include uno strumento di decodifica che ti consente di estrarre singoli fotogrammi in alcuni formati di immagine, nessuno dei quali è gif (forse è un problema di licenza?)

Ad ogni modo, ho usato il seguente script:

#!/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

Che crea un'animazione gif dai fotogrammi estratti del file fornito nel primo argomento.

L'ho provato su questo file e il file risultante era una specie di artefatto. È una forma adeguata per postare in questo forum suggerimenti di miglioramento della procedura/invocazioni?

E:se ci sono strumenti personalizzati per questa conversione, condividi le tue conoscenze! 🙂

Risposta accettata:

Il tuo script funziona bene, ma devi azzerare i nomi dei tuoi frame individuali; altrimenti crea la gif con cornici in un ordine confuso. L'ho risolto e l'ho provato su alcune animazioni giphy webp (incluso il tuo esempio) e l'output è quello che ti aspetteresti.

Di seguito è riportato solo il tuo script con due modifiche. Innanzitutto, un for modificato ciclo per azzerare quei nomi di file di frame. In secondo luogo, ho aggiunto un altro controllo webpinfo per acquisire la durata del frame e utilizzarla (se> 0) per DELAY (supponendo ingenuamente che le persone non stiano utilizzando durate di frame variabili):

#!/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. Installa Pencil2D Animation su Ubuntu 20.04 LTS

  2. Client CLI di Tidal – Streaming di musica di marea dalla riga di comando di Linux

  3. Peek:un semplice registratore di schermate gif animate per Linux

  4. Visualizzatore PDF CLI per Linux

  5. Linux:cambia il nome host nella CLI

Come controllare la velocità di Internet in Linux utilizzando Speedtest CLI

Come convertire video in GIF in Linux [Metodi terminale e GUI]

7 modi per controllare la velocità della rete in Linux con browser e cli

Come installare e utilizzare WP CLI su Linux

Come installare e configurare Angular CLI su distribuzioni Linux

Come disabilitare il WiFi su un sistema Linux:metodi GUI e CLI