• 締切済み

連番ファイルからバッチ処理でgifアニメを作る方法

画像ソフトirfanviewですが、シェル上のコマンドラインでi_view64.exeで呼び出すことができます。そこで、連番の画像ファイルがあってそれを束ねてgifアニメを作るi_view64.exeの使い方がないかなと思っています。いわゆるバッチ処理でループを回りながらi_view64コマンドで1つのgifアニメファイルを作りたいということですが。よろしくお願いします。

みんなの回答

  • asciiz
  • ベストアンサー率70% (6871/9771)
回答No.5

>入力ファイルと出力ファイルが同じ拡張子だったら、 >無限に読み書きしていかないか?ということでしょうか。 無限に読み書きする、または、全部くっつけた奴をもう一度くっつけて2倍(2ループ)になるのでは無いか、と言う予想はがするのですが。 もっとも、ファイル出力中はGIFでも何でも無いファイル名が付いていて、最後にリネーム、とかなっていれば事故無く作成できることにはなるんですが。 希望しない動作はあらかじめ避けて置いた方が無難だと思います。 >まさに連番は読む順番を理解しているということですので、 >ファイル名が文字でも序列の対象になるのでしょうか。 数字が付いていなくても、ワイルドカードにマッチするファイルは全て結合していくはずです。 で、そのときの順番なのですがおそらく、「ディレクトリに書かれている順番」になるのでは無いかと思うのですよね。 Windowsエクスプローラは自動的にファイル名や付いている数字で並べ替えて表示しますが、ディレクトリ上の順番はそれとは違う可能性があります。 1つ作業フォルダを作って、そこにくっつけたい順で放り込んでいけば、その順になるんじゃ無いかとは思うんですが。1フォルダ100枚とかあるとちょっと大変ですねえ。

skmsk1941093
質問者

お礼

お付き合いありがとうございます。考えてみるとワイルドカードでコマンド dir *.gif などと入力すると何の順番で出力されるかわからなという面がありますね。出力結果は過不足ないですが、何の順番なの?とは聞きたくなります。今まで何も気に留めてこなかったのですが。今回は動画なので順番は絶対ですが。作成日時と連番は序列が同じではありますが。

skmsk1941093
質問者

補足

gif連番からgifだとまずい気がするので、jpgに変えました。 magick convert -delay 100 -loop 0 *.jpg Animation.gif 惜しいところでおかしくなりました。 1.jpg,2.jpg....10.jpgと調子よくいくのですが、おそらくそのあとで1.jpgに戻ってしまい、11.jpg,12.jpg...20.jpg, 1.jpg..となり、切れ切れのアニメになってしまいました。そこで、*.jpgとなっているところにズラズラと100枚のjpg名を羅列したところ問題なく動作しました。これからこれで行こう、という気にはなれませんが、うまくいきました。 ワイルドカードがうまく回ってくれないかと思うのですが。

すると、全ての回答が全文表示されます。
  • asciiz
  • ベストアンサー率70% (6871/9771)
回答No.4

>こうする必要があるのでしょうか。 >100枚越えが多いと思いますので。最初と最後だけでいいとかにならないでしょうか。 ひとつ前の例のように、ワイルドカードを使っていいと思います。 ただし、複数のgifファイルからアニメgifを作成する場合、「*.gif」としてしまうと、生成しようとするgifファイルも取り込もうとしてひどいことになるかもしれません。 出力ファイルを別フォルダに作るか、ファイル名の一部を指定してワイルドカードでマッチしないようにする工夫が必要だと思います。 例1) magick convert -delay 100 -loop 0 *.gif C:\temp\myAnimation.gif 例2) magick convert -delay 100 -loop 0 frame*.gif myAnimation.gif 用意してある画像が *.png や *.jpg であるなら、上記のことを気にする必要はないでしょう。

skmsk1941093
質問者

お礼

ご注意もありがとうございます。 入力ファイルと出力ファイルが同じ拡張子だったら、無限に読み書きしていかないか?ということでしょうか。 ここで連番という概念ですが、数字でなくても連番ファイルの対象になるでしょうか。まさに連番は読む順番を理解しているということですので、ファイル名が文字でも序列の対象になるのでしょうか。とすると、ワイルドカードは数字による序列を無視してかたっぱしから認識したもの順に処理しているということでしょうか。数字と文字は区別されてるんじゃないかと思いますが。ループカウンタに応じて数字が生成され、それを文字に変換し、その部分とファイル名(拡張子を除いた)部分と合致したら処理する、ということじゃないかと思うのですが。実験してみることですかね。

すると、全ての回答が全文表示されます。
  • asciiz
  • ベストアンサー率70% (6871/9771)
回答No.3

>imagemagickとffmpegの2つでできる可能性が示されました。 ffmpegでの作成は、動画ファイルからシーンを切り取ったアニメGIF生成となります。 複数の静止画から生成できるツールではありません。 ImageMagickを使いましょう。 ImageMagickの使い方は、回答No.2に書いたリンク先の方に詳しく書かれていますので、そちらをご参照ください。

skmsk1941093
質問者

お礼

回答ありがとうござします。No2に書かれていた、 magick convert -loop 0 *.gif myAnimation.gif でファイル名をいちいち書かなくても順番に処理してくれるとのことで目的達成です。ありがとうございました。 ワイルドカード *.gifで連番の順番が分かるようになっているとは半信半疑ですが、さすがです。

すると、全ての回答が全文表示されます。
  • asciiz
  • ベストアンサー率70% (6871/9771)
回答No.2

ImageMagick というコマンドラインから画像を扱えるツール群があります。 その中に、アニメGIFを作成する convert コマンドが含まれています。 使い方は以下のページなど参考に。 (参考1)インストールとGUIでの作成方法 >windows10でImageMagickを使ってコマンド一発で超簡単にGIFアニメを作成してみた! >https://i-think-it.net/windows10-imagemagick-gif-anime/ (参考2)コマンドラインからの作成方法 >ImageMagick – GIFアニメの作り方 - buralog >https://buralog.jp/imagemagick-gifanimation/ ---- ただ、Windowsで気を付けないといけないのは、C:\Windows\System32\ というフォルダに convert.exe というコマンドが入っていて、コマンドラインから convert~ と打つと、こちらを起動してしまう場合があることです。 System32フォルダの convert.exe は、FATファイルシステムをNTFSファイルシステムにコンバートする、というコマンドであるので、正直、使うことはありません。 (ImageMagic のconvert だと思って起動すると、「無効なドライブ指定です」などのエラーが表示されます) なので、C:\Windows\System32\convert.exe のファイル名を、convert_FS.exe などに変更して、間違ってそちらを起動しないようにしておくと良いと思います。

skmsk1941093
質問者

お礼

回答ありがとうございます。他に聞いてみたのですが、imagemagickとffmpegの2つでできる可能性が示されました。imagemagickはLinux上で利用できたのでコマンドラインでの処理に親和性があるかなと思っていました。ffmpegはWindowsのGUI系のソフトかなと思っていましたが、これもしっかりコマンドライン処理に対応しているようです。どちらもパスを通してバッチから呼び出すだけなのですが、具体的な書式がわかると助かりますが。

skmsk1941093
質問者

補足

which convertで調べてみると、関係のないconvert.exeが最初に検出されました。リネームで問題回避ということですかね。 以下のような場合は問題回避措置が必要だと思います。 convert -layers optimize -loop 0 -delay 100 *.jpg -delay 240 <最後に表示するJPGファイル>.jpg <生成するGIFファイル名>.gif ところで、以下のような実例も出てきました。convertの前にmagickを入れています。これはどうなのでしょうか。 magick convert -delay 100 -loop 0 1.gif 2.gif 3.gif. 4.gif myAnimation.gif これだったらいいかな思いますが、1つ萎えるのが静止画名1つ1つ書いています。こうする必要があるのでしょうか。100枚越えが多いと思いますので。最初と最後だけでいいとかにならないでしょうか。

すると、全ての回答が全文表示されます。
回答No.1

IrfanViewには、アニメGIFを作成する機能は無かったハズ。 せいぜい、スライドショーするくらい。 スライドショーを、スクリーンセーバーの.exe、.scrに出力ってのは可能ですが。 -- IrfanViewの一括処理で色やサイズを合わせたGIF画像に変換し、別のアニメGIF作成ツールで処理するのが真っ当だと思う。

skmsk1941093
質問者

お礼

回答ありがとうございます。前提条件としてgifの連番ファイルは既にあるのでそれを束ねるというのは技術的ハードルが低いと思っていたのですが。 psファイルからgifの連番ファイルを作成するのにi_view64.exeを使っており、さらにi_view64で束ねることを考えていました。irfanviewがダメだとしたらコマンドラインで連番gifからアニメgifを作成する別のソフトがないでしょうか。コマンドラインで一括処理するのが一番効率がいいのですが。

すると、全ての回答が全文表示されます。

関連するQ&A