Performance

為什麼這個 GIF 播放不流暢?

  • March 20, 2020

in.gif (814KB)

在.gif

in.jpg (1.03MB)

在.jpg

我用來生成 gif 的命令 -

convert -coalesce "in.gif" "0.png"

for file in 0*.png
do
 composite -gravity center "$file"   in.jpg   compose_over"$file"
done

convert compose_over*.png output.gif

輸出.gif (58.5MB)

輸出.gif

輸出的 GIF 不像原始的那樣是平滑的 GIF。為什麼?我怎樣才能使它成為一個平滑的 GIF 以及如何減小它的大小?

文件名最終為 0-0.png, 0-1.png, …, 0-9.png, 0-10.png, 0-11.png, …

但是隨著*字母擴展,您使用它們的順序最終是 0-0.png, 0-1.png, 0-10.png, 0-11.png, …, 0-19.png, 0 -2.png, 0-21.png, …

因此,您正在無序地處理幀,從而導致動畫不穩定。

要解決此問題,您可以使用0-?.png 0-??.png代替0*.png,或將其寫為0-{0..35}.png(如果本範例中總共有 36 幀)。

或者在第一個命令"0%06d.png"中用作輸出文件名,因此數字將具有前導零以使字母和數字順序相同。

其他問題是原始 gif 動畫速度/延遲的損失(在這種情況下似乎是-delay 4),以及完全缺乏 GIF 優化(-layers Optimize)以用於較小的文件大小。

ImageMagick 給我添加的這些選項是一個平滑的 1.9MB 文件,儘管有一些圖形工件,IM 的 GIF 優化器似乎有一些問題。使用-layers OptimizePlus對我有用,但會產生更大的文件。您可以嘗試使用其他軟體來優化 GIF 動畫大小。

為了獲得更好的視覺效果,您必須完全放棄 GIF 格式。它根本不是為了結合攝影背景。如果您打算在某些網頁上使用它,您也許可以使用 CSS 實現相同的效果,同時保持輸入文件不變。

引用自:https://unix.stackexchange.com/questions/573928