当ブログはアフィリエイト広告を掲載しています。

Pythonで簡単にGIFアニメを作る(Pillow編)


今回はPythonを使って簡単にGIFアニメを作る方法を紹介します。以前の記事「マイクラでストップモーションアニメ作ってみた」でGIFアニメを作成しましたが、そのとき使用したのは Pillow でした。GIFアニメを作る方法は他にもありますが、Pillow を使えば、画像のトリミングやリサイズもまとめて処理できて便利です。

目次

使用したコード

以下は実際のコードです

import glob
from PIL import Image

# === 固定のトリミングサイズを設定(左, 上, 右, 下) ===
CROP_BOX = (0, 80, 1900, 1000)  # 必要に応じて変更
RESIZE_TO = (500, 460)
# === 画像ファイルを取得(ソートして順番を統一) ===
image_files = sorted(glob.glob("screenshots*.png")) 

# === 画像を読み込んでトリミング ===
frames = []
for img_path in image_files:
    img = Image.open(img_path).crop(CROP_BOX)  # 固定サイズでトリミング
    img = img.resize(RESIZE_TO, Image.LANCZOS)  # 解像度縮小
    frames.append(img)  # そのままPillowのImageオブジェクトとして保存

# === GIFアニメとして保存 ===
output_gif = "filename.gif"
frames[0].save(
    output_gif,
    save_all=True,
    append_images=frames[1:],  # 2枚目以降を追加
    duration=100,  # 1コマあたりの表示時間(ミリ秒)
    loop=0  # ループ(0で無限ループ)
)

print(f"GIFアニメを保存しました: {output_gif}")

解説

  1. glob.glob(“screenshots*.png”) で、指定したパターン(ここでは screenshots*.png)に一致する画像を取得。sorted() を使ってファイルの順番を統一します。
  2. Image.open(img_path).crop(CROP_BOX) で画像を開き、トリミングを行います。
  3. resize(RESIZE_TO, Image.LANCZOS) でリサイズし、画像を小さくして容量を抑えます。
  4. frames[0].save() で最初の画像を基準にGIFを作成し、残りの画像を append_images で追加。
  5. duration=100 で各フレームの表示時間を100msに設定、loop=0 で無限ループのアニメーションにします。

作ったGIFアニメ

今回新しく作ったGIFアニメはこちら。「犬が電車を追いかけているところ」です。10枚の絵を組み合わせています。

元々はスクショを組み合わせてGIFを作成することが目的(以前の投稿: マイクラでストップモーションアニメ作ってみた)だったので、トリミングやリサイズが必要だったのですが、今回新しく作った絵は初めから絵画ソフトで書いて画像として保存してたので、トリミングもリサイズも不要でした。。。

まとめ

Pillow を使って簡単にGIFアニメを作成できました。

ランキング

応援お願いしいます。

にほんブログ村 小学生日記ブログ 小学生 不登校へ
にほんブログ村
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

博士号を持つ元理系研究者で、現在は会社員。研究者時代にC++などのプログラミングを少しかじっていたこともあり、娘と一緒にプログラミングを学ぶことにしました。また、マネーリテラシーを高めるために、お金や株、投資について日々勉強中。学校では教えてもらえない大切なことがたくさんあると気がつき、「生き抜くスキル」を娘と一緒に身につけていきたいと思っています。

目次