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を生成します。
試してみたこのファイルそして結果ファイル少し人工的です。このフォーラムに手順/通貨を改善するための提案を投稿するのは適切ですか?
そして、この変換のためのカスタムツールがある場合は、知識を共有してください! :)
ベストアンサー1
私自身も同じ問題に遭遇し、PythonとPillowライブラリを使用するのがおそらく最も簡単な方法であることがわかりました。インポートして画像ファイルをロードしてから、適切なオプションを使用して直接保存します。
from PIL import Image
im = Image.open('your_file.webp')
im.save('your_file.gif', 'gif', save_all=True, optimize=True, background=0)
Python3.8とPillow 8.0.1を使用してテストされました。たとえば、次のようにライブラリをインストールまたはアップグレードする必要があります。python3 -m pip install --user --upgrade Pillow
*.webp
現在のフォルダ内のすべてのファイルを*.gif
1行ずつ同じ名前のファイルに一括変換します。
for f in *.webp;do echo "$f";python3 -c "from PIL import Image;Image.open('$f').save('${f%.webp}.gif','gif',save_all=True,optimize=True,background=0)";done
注:この回答は以下からインスピレーションを受けました。スタックオーバーフロー。