• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:画像回転アニメ)

Pythonで画像回転アニメを作成する方法

このQ&Aのポイント
  • Pythonを使用して読み込んだ画像を360度回転するgifアニメを作成したいです。
  • コードを実行すると、'list index out of range'などのエラーが発生します。解決策を教えてください。
  • Colaboratoryを使用しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • asciiz
  • ベストアンサー率70% (6803/9674)
回答No.2

out of range はこのプログラム自体ではなく、呼び出したモジュール内で出ていますね? C:\Users\********\Desktop\python\q9888196>python q9888196.py Traceback (most recent call last): File "C:\Users\********\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\animation.py", line 236, in saving yield self File "C:\Users\********\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\animation.py", line 1160, in save anim._init_draw() # Clear the initial frame File "C:\Users\********\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\animation.py", line 1533, in _init_draw for artist in f: TypeError: 'Image' object is not iterable During handling of the above exception, another exception occurred: Traceback (most recent call last): File "q9888196.py", line 16, in <module> anim.save('ani.gif',writer="pillow") File "C:\Users\********\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\animation.py", line 1177, in save writer.grab_frame(**savefig_kwargs) File "C:\Users********\AppData\Local\Programs\Python\Python38\lib\contextlib.py", line 131, in __exit__ self.gen.throw(type, value, traceback) File "C:\Users********\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\animation.py", line 238, in saving self.finish() File "C:\Users\********\AppData\Local\Programs\Python\Python38\lib\site-packages\matplotlib\animation.py", line 540, in finish self._frames[0].save( IndexError: list index out of range 回答No.1さんご指摘の原因による異常動作だと思いますがPILの使い方よくわかってなくてどう直すのか(汗 とりあえず、こちらのページを参考に、 >Python, PillowでアニメーションGIFを作成、保存 | note.nkmk.me >https://note.nkmk.me/python-pillow-gif/ >anim = animation.ArtistAnimation(fig,ims) >anim.save('ani.gif',writer="pillow",fps=10) を ims[0].save('ani.gif', save_all=True, append_images=ims[1:], loop=0, duration=100) に入れ替えたところ、きちんとGifファイル生成できました。(10fps = 1フレーム 100ms (→duration指定))

dreamquest
質問者

補足

有り難うございました。実は質問した後、同じサイトをみつけims[0].save('ani.gif', save_all=True, append_images=ims[1:], loop=0, duration=100)試しうまくいきました。只、意味が全く分からないのですがこのメソッドはアニメーション化とSaveの機能を持っているのでしょうか。このメソッドはPILのものでしょうか?素人なので変な聞き方になっていたらご容赦ください。

その他の回答 (1)

  • akira1720
  • ベストアンサー率80% (128/159)
回答No.1

なぜ list index out of range エラーになるのかうまく説明できませんが、とりあえず ArtistAnimation の第2引数は Artist オブジェクトのリストでないといけないのに、PIL の Image オブジェクトのリストを渡しているのが問題だと思います。

関連するQ&A