3

ImageMagick は gif を jpg に分割しますが、白いピクセルを持つものと持たないものがあります。

convert -strip tree.gif tree.jpg

gif を 86 個の jpg に分割します。68番と69番です。

#68

ここに画像の説明を入力

そして#69

ここに画像の説明を入力

そして問題のgif:

http://i.stack.imgur.com/yTBnJ.gif

約 1/3 に同様のエンコーディングの問題があります。

convert -version
Version: ImageMagick 6.6.9-7 2012-08-17 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features: OpenMP   

uname -a
Linux paul-Pangolin-Performance 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
4

1 に答える 1

7

アニメーション GIF 画像では、それぞれの新しいフレームが前のフレームの上に描画されます。つまり、前のフレームと同一のピクセルは透明なピクセルで表すことができます。(実際には、これは「Dispose None」アニメーションにのみ当てはまりますが、それがここにあります。3 種類の破棄方法の詳細については、こちらを参照してください。)

アニメーション GIF オプティマイザー ツールは、透明に変換できる (より効率的に圧縮できるように) ピクセルの長いランを探すことで、これを利用します。そのため、元の画像に透明なピクセルが含まれている可能性があります。

これらのフレームが JPG に変換されると、透明なピクセルが背景色の白に変換されます。

修正方法については、こちらを参照してください。最初に「オーバーレイ アニメーション」を「結合アニメーション」に変換してから、それを一連の JPG ファイルに変換できます。次のようになります。

convert tree.gif -coalesce -set dispose previous tree2.gif

次に、アニメーションが同じに見えることを確認してから、次のようにします。

convert -strip tree2.gif tree.jpg

私はそこからリンクされたgif_anim_montageスクリプトを見ていません。私はそれが同じことを効果的に(さらに多くのものを)行っていると推測していますが、おそらくあなたを助けるいくつかの巧妙なトリックがあるので、私は見てみたいと思います.

PS、たとえば PNG や GIF の代わりに JPG 出力が本当に必要ですか? JPG は品質が低下することが保証されていますが、PNG は品質が低下しないことが保証されています。また、ソース データ (256 色の GIF 画像) を考えると、PNG は少なくとも同等かそれ以上に圧縮される可能性があります。簡単なテストでは、デフォルト設定で 1980K 対 1916K であり、簡単な最適化で PNG が 1888K に低下することが示されています。

于 2012-11-10T00:14:07.737 に答える