Respuestas:
ImageOptim usa Gifsicle para su compresión Gif. Hasta donde sé, funciona bastante bien (generalmente no uso Gif en estos días). Desde su sitio:
¡Optimiza tus animaciones! Esto almacena solo la parte modificada de cada cuadro y puede reducir radicalmente sus GIF. También puede usar la transparencia para hacerlos aún más pequeños. El optimizador de Gifsicle es bastante potente, y generalmente reduce las animaciones a un par de bytes de los mejores optimizadores comerciales.
Uso ezgif.com/optimize , ya que GIMP y otras herramientas no son buenas en este trabajo. La diferencia es que ezgif usa una gifsicle
modificación (con una lossy
bandera), no disponible en la apt
versión. Vea la versión 1.82.1 aquí (reemplace /usr/bin/gifsicle
con la apropiada para su sistema (el binario que termina con -static
).
Mis notas sobre un flujo de trabajo de optimización de gif completo están aquí .
Editar : la secuencia de comandos actual que se mantiene en uso se actualizará en GitHub aquí
No describiré cómo lo hago todo aquí, la idea general es algunas funciones / alias bash:
function gifopt() {
# args: $input_file ($loss_level)
if [ -z "$2" ]
then
# use default of 30
local loss_level=30
elif [[ "$2" =~ ^[0-9]+$ ]] && [ "$2" -ge 30 -a "$2" -le 200 ]
then
local loss_level=$2
else
echo "${2:-"Loss level parameter must be an integer from 30-200"}" 1>&2
exit 1
fi
local inputgif="${1?'Missing input file parameter'}"
local gifname="$(basename $inputgif .gif)"
local basegifname=$(echo "$gifname" | sed 's/_reduced_x[0-9]//g')
local outputgif="$basegifname-opt.gif"
gifsicle -O3 --lossy="$loss_level" -o "$outputgif" "$inputgif";
local oldfilesize=$(du -h $inputgif | cut -f1)
local newfilesize=$(du -h $outputgif | cut -f1)
echo "File reduced from $oldfilesize to $newfilesize as $outputgif"
}
function gifopt() {
# args: $input_file ($loss_level)
if [ -z "$2" ]
then
# use default of 30
loss_level=30
elif [[ "$2" =~ ^[0-9]+$ ]] && [ "$2" -ge 30 -a "$2" -le 200 ]
then
loss_level=$2
else
echo "${2:-"Loss level parameter must be an integer from 30-200"}" 1>&2
exit 1
fi
local inputgif="${1?'Missing input file parameter'}"
local gifname="$(basename $inputgif .gif)"
local basegifname=$(echo "$gifname" | sed 's/_reduced_x[0-9]//g')
local outputgif="$basegifname-opt.gif"
gifsicle -O3 --lossy="$loss_level" -o "$outputgif" "$inputgif";
local oldfilesize=$(du -h $inputgif | cut -f1)
local newfilesize=$(du -h $outputgif | cut -f1)
echo "File reduced from $oldfilesize to $newfilesize as $outputgif"
}
function gifspeedchange() {
# args: $gif_path $frame_delay (1 = 0.1s)
local orig_gif="${1?'Missing GIF filename parameter'}"
local frame_delay=${2?'Missing frame delay parameter'}
gifsicle --batch --delay $frame_delay $orig_gif
local newframerate=$(echo "$frame_delay*10" | bc)
echo "new GIF frame rate: $newframerate ms"
}
La --lossy
bandera toma un número entero de 30 a 200, por lo que para obtener la mejor calidad:
gifsicle -O3 --lossy=30 -o output.gif input.gif
Con la función anterior gifopt
, puede simplificar las cosas, ya que el valor predeterminado es 30
gifopt input.gif
... la salida se nombrará automáticamente input-opt.gif
. Puede cambiar la función para usar el --batch
indicador para la edición in situ, pero no recomendaría sobrescribir su material de inicio.
Esa función también funciona para eliminar cualquier _reduced_x
sufijo agregado por la función de reducción de conteo de cuadros, es decir, podría tener un archivo intermedio input_reduced_x2.gif
(un paso que reduciría a la mitad el tamaño del archivo al dejar caer cualquier otro cuadro).
Si lo hizo, la velocidad puede cambiar, arreglado, gifspeedchange input-opt.gif 5
por ejemplo, para usar un retraso de cuadro de 50 ms.
Puede optimizar su archivo .gif en Gimp fácilmente.
Simplemente guarde como .gif y luego comprima o puede guardar en otra extensión como .jpeg u otra.