「みんな教えて! 選手権!!」開催のお知らせ

#ライブラリのインポート
from PIL import Image
#画像を入れる箱を準備
pictures=[]
#画像を箱に入れていく
for i in range(70):
pic_name=str(i+1)+ '.png'
img = Image.open(pic_name)
pictures.append(img)
#gifアニメを出力する
pictures[0].save('anime.gif',save_all=True, append_images=pictures[1:],
optimize=False, duration=16.66666, loop=0)
このコードでgifを作成しましたが、画像が切り替わっても前の画像が消えずに残り続けてしまいます。例えば4枚目の画像に切り替わった時も1枚目、2枚目、3枚目の画像が残っています。全ての画像で同じ現象が起きます。画像が切り替わった時にそれ以前の画像を表示しない方法が知りたいです。
どうぞよろしくお願い致します。

A 回答 (1件)

う〜む。

分からん!
正直言うと、そもそもgifアニメをPythonで作る「必然性」が良く分かんねぇんだよなぁ。
ハッキリ言っちゃうと、「専門のソフト」で作った方が良くないか、と。何故にPythonで「苦労して」gifアニメを作らにゃアカンのか。

プログラミングってさ。第一に「適した場面で適したツールを選んで適用させる」のが才能、っつーかセンスなのね。
特定のツールにこだわって(この場合Pythonか)「それを何が何でも使わなアカン」ってなるのはあまり賢いやり方じゃねぇんだわ。
例えば、単にコマンドラインでgifアニメを作りたいだけ、ならImageMagickと言うソフトがあって、それが一番簡単にgifアニメを作る方法の一つだと思う。

ImageMagick:
https://imagemagick.org

ImageMagick使いかた日本語マニュアル:
https://imagemagick.biz

ImageMagickでのgifアニメの作り方、なんつーのはWeb検索すればそれこそ山ほど引っかかるだろう。
このテのCLI(コマンドライン)のソフトウェアは、例えばWindowsだとPowerShellやDOS窓(コマンドプロンプト)で扱うソフトだ。
言い換えると、実はPythonから呼び出して使う事も可能だ。

サブプロセス管理:
https://docs.python.org/ja/3/library/subprocess. …

つまり、マジメにGIFアニメを作りたい、ってのなら、PILモジュールを使う、ってのは必ずしも「スジの良い」やり方だとは思わないんだよ。だってそもそもgifアニメを作る目的のツールじゃないだろ?「出来るよ」ってだけであってそれ以上じゃない。
マジメにプログラミングをしたい、ってぇのなら、このテのCLIのソフトウェアを使う事を覚えるべきだね。OSの・・・Windowsの備えてるコマンドラインも調べて習熟すべきだし(ファイル名を全部連番化したいのなら当然だ)、そして上のサブプロセス管理のように、「Pythonから」端末的機能を呼び出して、目的の事をやらせてみる、ってのも有効だろう。
まぁ、一回素のままでImageMagick使ってgifアニメを作ってみてご覧。それが終わってから、Pythonでサブプロセス利用してImageMagickを呼び出して同じ事を実験してみる・・・とかやっていけば、嫌でも習熟していくと思うよ。
    • good
    • 0
この回答へのお礼

Pythonが簡単だと聞いたので何となく使っていました・・ImageMagick使ってみたいと思います。ありがとうございました。

お礼日時:2024/04/21 10:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A