多くの 質問を尋ねる作成方法アニメーションgifセットからpng画像の ImageMagickのconvert
コマンドのバリアントを使用することを提案します。
convert -delay 2 -loop 0 *.png animated.gif
しかし、私は数千の画像を持っているため、convert
はすべてのメモリを使い果たし、スワップしてからクラッシュします。 よりメモリを意識した代替ソフトウェアはありますか?.gif
がサポートされていない場合、別のオープンフォーマットを使用できますが、 CLIツール。
ビデオを作成しようとしているようです。その場合は、適切なビデオ形式を使用します。
この場合、 ffmpeg を使用して、個々のPNGファイルをH.264ビデオに変換します。 ffmpegは数時間かかる可能性のあるビデオで動作するように作られているため、数千の画像に問題はないはずです。アニメーションGIFの代わりにH.264を使用すると、画質がvast向上します。
このような何かがあなたのために働くはずです:
ffmpeg -framerate 1/2 -i img%04d.png -c:v libx264 -r 30 out.mp4
-framerate 1/2
:これは、フレームレートをFPSの半分、つまりフレームあたり2秒に設定します。-i img%04d.png
:これは、ファイルimg0000.png
〜img9999.png
を読み取るようにffmpegに指示します。-c:v libx264
:ビデオコーデックlibx264を使用します。-crf <number>
:品質設定。 0〜51。23がデフォルトです。 0は真のロスレスエンコーディングであり、非常に高い帯域幅になります。 18はほとんど視覚的にロスレスです。-r 30
:出力フレームレートを30 FPSに設定します。ここで指定したものを出力するために、各入力画像が複製されます。このパラメーターをオフのままにすると、出力ファイルは入力フレームレートになりますが、結果のムービーは今試したときに正しく表示されませんでした。out.mp4
:出力ファイル名。参照:
個人的には、一度に全部ではなく、限られた数のファイルで起動するだけです。たとえば、次のようなもの:
#!/usr/bin/env bash
## Collect all png files in the files array
files=( *png )
## How many should be done at once
batch=50
## Read the array in batches of $batch
for (( i=0; $i<${#files[@]}; i+=$batch ))
do
## Convert this batch
convert -delay 2 -loop 0 "${files[@]:$i:$batch}" animated.$i.gif
done
## Now, merge them into a single file
convert animated.*.gif all.gif
-limit memory 1GiB
を使用して、convert
が使用するメモリ量を制限します。
何千もの画像は、ほとんどのコンピューターが表示に苦労する巨大なGIFを作成します。可能であれば、アニメーションGIFを200画像未満に保ちます。少ないほど良い。画像に番号を付けると、このコマンドは奇数番号の画像rm *[13579].png
を削除します。
映画のシーンからアニメーションGIFを作成するための典型的なワークフローは次のとおりです。
avconv -ss 00:26:00 -i someMovie.mpg %5d.png
rm *[13579].png
convert -limit memory 1GiB -loop 0 -layers optimize -resize 400 *.png output.gif
数千のpng-sがある場合、anigif形式は奇妙です。 avconv
を使用して、次のようにします。
avconv -i "%d.png" -r 25 -c:v libx264 -crf 20 -pix_fmt yuv420p animated.mov
他の答えに加えて:GIFファイルを作成したいので、Webページに画像を表示したいと思います。もしそうなら、私はあなたのPNGをまったく気にすることはありません。 「javascript slideshow」をグーグルで検索し、数百万の無料スクリプトのいずれかを使用します。または、独自に作成します。これは本当に簡単です。
この方法で行う利点は次のとおりです。
ブラウザに読み込まれる画像は常に1つだけです。スライドショーはすぐに開始され、ユーザーのマシンでRAMをあまり消費しません。
このソリューションは数百万の画像に対応します。数十億、あなたがそれらすべてを見るのに十分忍耐強くあるなら:)
ページにコントロールを追加して、一時停止、巻き戻し、遅延の変更、または特定のフレームに移動できます。
gifsicle は、GIFアニメーションを処理するコマンドラインユーティリティです。メモリを速度と引き換えに使用する場合は、-conserve-memoryスイッチを使用できます。