GNU/Linux >> Tutoriales Linux >  >> Linux

Linux – ¿Animación webp a animación gif (cli)?

Hoy me sorprendió descubrir lo difícil que es pasar de un webp animación a gif animación. Mi GIMP 2.8.22 y ImageMagick 7.0.7-21 en linux 4.14.13-1-ARCH no parecen admitir el formato, y la única herramienta disponible en repositorios parece ser libwebp 0.4.1 que incluye una herramienta de decodificación que le permite extraer cuadros individuales a algunos formatos de imagen, ninguno de ellos es gif (¿Quizás sea un problema de licencia?)

De todos modos, utilicé el siguiente 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

Lo que crea una animación gif a partir de los fotogramas extraídos del archivo proporcionado en el primer argumento.

Lo probé en este archivo y el archivo resultante fue un poco defectuoso. ¿Es correcto publicar en este foro sugerencias de mejora del procedimiento/invocaciones?

Y:si hay herramientas personalizadas para esta conversión, ¡comparta sus conocimientos! 🙂

Respuesta aceptada:

Su secuencia de comandos funciona bien, pero necesita rellenar con cero los nombres de los cuadros individuales; de lo contrario, crea el gif con marcos en un orden desordenado. Lo arreglé y lo probé en algunas animaciones giphy webp (incluido tu ejemplo) y el resultado es lo que esperas.

A continuación se muestra solo su secuencia de comandos con dos cambios. Primero, un for alterado bucle para rellenar con cero esos nombres de archivo de marco. En segundo lugar, agregué otra verificación webpinfo para capturar la duración del marco y usar eso (si> 0) para DEMORA (suponiendo ingenuamente que las personas no están usando duraciones de marco variables):

#!/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. Instalar Animación Pencil2D en Ubuntu 20.04 LTS

  2. Linux:¿los diferentes kernels de Linux/unix son intercambiables?

  3. ¿Cómo convertir una tira de Png a un GIF?

  4. Peek:un grabador de pantalla GIF animado simple para Linux

  5. CLI visor de pdf para linux

Cómo verificar la velocidad de Internet en Linux usando Speedtest CLI

Cómo convertir video a GIF en Linux [Terminal y métodos GUI]

7 formas de verificar la velocidad de la red en Linux con navegador y cli

Cómo instalar y usar WP CLI en Linux

Cómo instalar y configurar CLI angular en distribuciones de Linux

Cómo deshabilitar WiFi en el sistema Linux:métodos GUI y CLI