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


12

このアニメーションをプログラムで作成しましたが、PNGシーケンスとしてのエクスポートをサポートしていないようで、GIFに変換できます。アニメーションは100フレームを超えるため、各画像を1つずつ保存するには時間がかかります。ただし、映画フィルムのような「ストリップ」としてのエクスポートはサポートしています。アニメーションの各画像の寸法は同じです。プログラムの「ストリップ」機能の仕組みは次のとおりです。

アニメーションの画像は水平方向に積み上げられ、最初のフレームは左端、最後のフレームは右端になります。フレーム間にギャップはありません。また、アニメーションにXフレームがある場合、ファイル名は通常「name_stripX.png」です。各フレームが32 x 32で、アニメーションに8フレームがある場合、このファイルの幅は256、高さは32になります。

出力の例を次に示します。各色は1つのフレームを塗りつぶします。

出力例

また、物事をもう少し明確にするために、このプログラムは「Game Maker 8.0」と呼ばれます。

回答:


16

ImageMagickを使用してさまざまな方法で画像を変換できます。これは非常に簡単にできるはずです。最初original.pngに、ソース画像、この場合は32x32ピクセルのサイズに分割できます:

convert original.png -crop 32x32 parts-%02d.png

その後、アニメーションに変換でき-loop 1ます(ループさせたくない場合に使用します)。

convert -loop 0 -page +0+0 ./parts*.png output.gif

その結果:

最初のコマンドの出力PNGにはオフセットが含まれているため、-page +0+0オプションなしではアニメーションは次のようになります。

など、さまざまなオプションを含めることができます(主に2番目のコマンドに)-delay- アニメーションを最適化することもできます(たとえば、ここから借用)。

convert output.gif -fuzz 10% -layers Optimize optimised.gif

またはgifsicleを使用して

gifsicle -O output.gif -o optimised.gif

編集:フレームが透明な場合は、
-dispose Backgroundオプションを追加することにより、置き換えるフレームを設定できるため、次のフレームがロードされたときにフレームが破棄される場合:


上記の例はpageオプションなしで実行されているため、明確に表示されます

これに関する問題は、おそらく結果の画像をあまり最適化できないことです。そのため、別の方法として、次のフレームが前のフレームを覆うようにフレームを不透明にすることがあります。


画像には透明性があり、基本的には前のフレームの上に次のフレームを描画していますが、空白の上に次のフレームを描画するようにする方法はありますか?
user245115

ソース画像から透明度を削除するのが最も簡単な方法です。しかし、より多くのパラメーターを使用して実行できます。
-david6

@ user245115-オーバーレイの代わりにフレームを置き換えます-編集を参照してください。
ウィルフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.