GNU/Linux >> Linux の 問題 >  >> Linux

Linux – WebpアニメーションからGifアニメーション(cli)?

今日、webpから移動するのがいかに難しいかを知って驚いた。 gifへのアニメーション アニメーション。私のGIMP 2.8.22 およびImageMagick 7.0.7-21 linux 4.14.13-1-ARCH この形式をサポートしていないようです。リポジトリで使用できるツールはlibwebp 0.4.1のみのようです。 これには、個々のフレームをいくつかの画像形式に抽出できるデコードツールが含まれていますが、いずれもgifではありません(ライセンスの問題かもしれません)

とにかく、私は次のスクリプトを使用しました:

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

これは、最初の引数で指定されたファイルの抽出されたフレームからgifアニメーションを作成します。

このファイルで試してみたところ、結果のファイルは一種のアーティファクトでした。手順/呼び出しの改善の提案について、このフォーラムに投稿するのは適切なフォームですか?

そして:この変換のためのカスタムツールがある場合は、あなたの知識を共有してください! 🙂

承認された回答:

スクリプトは問題なく機能しますが、個々のフレーム名をゼロで埋める必要があります。それ以外の場合は、フレームが乱雑な順序でgifを作成します。私はそれを修正し、いくつかのgiphy webpアニメーション(例を含む)で試してみました。出力は期待どおりです。

以下は、2つの変更を加えたスクリプトです。まず、変更されたfor それらのフレームファイル名をゼロパディングするためにループします。次に、別のwebpinfoチェックを追加して、フレーム期間を取得し、それをDELAYに使用します(0より大きい場合)(単純に、人々が可変フレーム期間を使用していないと想定します):

#!/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. Linux –異なるLinux / UNIXカーネルは交換可能ですか?

  2. Tidal CLIクライアント–LinuxコマンドラインからTidalMusicをストリーミング

  3. Linux - CLI でホスト名を変更する

  1. PNGストリップをGIFに変換する方法は?

  2. Linux コマンドで Webp 画像を PNG に変換する

  3. Linux ubuntu で PHP CLI を設定して www-data として実行するにはどうすればよいですか?

  1. Ubuntu20.04LTSにPencil2Dアニメーションをインストールする

  2. Peek –Linux用のシンプルなアニメーションGIFスクリーンレコーダー

  3. Linux 用の CLI pdf ビューア