pythonでavifに変換する

힘센캥거루
2025년 1월 13일(수정됨)
2
58

ページスピードインサイトでブログをチェックしたところ、画像のロードに時間がかかっていることがわかりました。

画像のダイエットが必要だと気づいた瞬間でした。

もともとはwebp形式を使用していましたが、avifが圧縮率が高く互換性が良く、さらにアニメーションもサポートしていることを知りました。

そこで一度比較してみました。

pythonでavifに変換する-1

pngファイルをavifに変換したところ、サイズが10倍に縮小されました。

2〜3倍ならわかりますが、10倍は非常に大きいです。

絶対に変えるべきだと思いました。

pythonでavifに変換する-2

pythonを使えばpngをavifに変換したり、avifをpngに変換することが可能です。

まずpipを使って必要なライブラリをインストールします。

pip install pillow pillow_avif imageio

まず、自分の画像はposts/[slug]/*.pngのようなパスに保存されています。

したがって、そのパスに移動してpngファイルをすべてavifに変換すればよいです。

from PIL import Image
import pillow_avif
import imageio
import pathlib

path = pathlib.Path.cwd()
# 現在のパスにあるファイルをすべて確認します。
for folder in path.iterdir():
    if folder.is_dir():
        for file in folder.iterdir():
            # フォルダであれば、フォルダ内のファイルを確認します。
            # 拡張子がjpg、pngなどの画像ファイルである場合に実行します。
            if file.suffix in [".jpg", ".png", ".gif", ".PNG", ".JPG", ".jpeg", ".webp"]:
                img = Image.open(file)
                # gifファイルなら必ずアニメーションです。
                # 各画像をフレームとして保存し変換します。
                if file.suffix == ".gif" :
                    frames = []
                    frame_count = 0
                    try:
                        while True:
                            current_frame = img.convert('RGB')
                            frames.append(current_frame)
                            img.seek(img.tell() + 1)
                    except EOFError:
                        pass
                    imageio.mimsave(f'{file.parent}/{file.stem}.avif', frames, format='AVIF')
                # それ以外の場合は単に拡張子を変換して保存します。
                else:
                    img.save(f'{file.parent}/{file.stem}.avif')

このように変換したところ、5.5MBのアニメーションが500kbになりました。

本当に圧縮率がすごいです。

pythonでavifに変換する-3

avifの性能についてはNetflixの公式ブログを確認しましょう。

avifの拡張子は経済の論理に従って企業がプッシュしているので、これからも発展していくと思われます。

ブログに適用してSEO最適化も狙ってみましょう。

관련 글

学校業務の自動化 - AIを利用した生活記録簿チェック 教科別・特別記述編
学校業務の自動化 - AIを利用した生活記録簿チェック 教科別・特別記述編
学校で最も意味がなく、きつくて退屈な業務を一つ挙げろと言われたら、自分は生活記録簿(生徒指導要録)チェックを選ぶだろう。中学校では生活記録簿がそれほど重要ではないが、高等学校では入試と関係しているため非常に重要である。問題は、このような生活記録簿の点検で探すものが、せいぜい単純な誤字脱字、記載禁止用...
ゼロから作りながら学ぶ LLM 第7章 読書レビューとチャレンジの感想
ゼロから作りながら学ぶ LLM 第7章 読書レビューとチャレンジの感想
第7章の内容は、指示に従うように微調整するプロセスだ。ある質問に対して、期待する応答を返すようにすること。やはり必要なのはデータである。1. 指示微調整の手順ここでの要点は、質問と応答のデータセットを用意し、入力-出力のペアとして学習させること。これをプロンプトスタイルと呼ぶ。その他は以前のプロセス...
ゼロから作りながら学ぶ LLM 第6章 読書レビュー
ゼロから作りながら学ぶ LLM 第6章 読書レビュー
第6章は、分類のためのファインチューニングについてである。例として出てくるのは、スパム分類器の作成。スパム分類器は、あるメールなどがスパムかスパムでないかを分類するものなので、出力結果は 0 や 1 のような値になる必要がある。1. ファインチューニングの手順ファインチューニングのプロセスは、モデル...
ゼロから作りながら学ぶ LLM 第5章 読書レビュー
ゼロから作りながら学ぶ LLM 第5章 読書レビュー
今日は12月14日だ。実はチャレンジ期間はすでに2週間も過ぎてしまったが、だからといってレビューを書くのをあきらめることはできなかった。こうして残しておくTILが、あとで自分の血となり肉となるからだ。コードそのものよりも、その意味に集中して書いてみようと思う。1. モデルの損失計算GPTモデルを作っ...
ゼロから作りながら学ぶ LLM 第4章 読書レビュー
ゼロから作りながら学ぶ LLM 第4章 読書レビュー
今日は11月26日なので、毎日1章ずつ読み切ればチャレンジ成功だ。長男と次男の妨害の中で、それが可能かどうかは分からない。1. ダミー・トランスフォーマーGPTモデルを作りながら、PyTorchからトランスフォーマーのダミーブロックを持ってくる箇所を見た。調べてみると、PyTorch の nn の中...
ゼロから作りながら学ぶLLM第3章読書感想
ゼロから作りながら学ぶLLM第3章読書感想
MacBookに大量の水をこぼしてパニックになり、3〜4日無駄にした。今考えてみると、どうせMacBookは駄目になったし、修理に出すと思って何かをすればよかったと思う。とにかく少し遅れたけど、最後までやるべきだと思い、第3章の感想を残す。1. アテンションメカニズム3章...

댓글을 불러오는 중...