Skip to content

Latest commit

 

History

History
76 lines (44 loc) · 4.94 KB

README.md

File metadata and controls

76 lines (44 loc) · 4.94 KB

Python Pillowによる画像処理~GIFよりも高精彩なAPNGでアニメーション画像を生成する

目的

本セミナーでは、Python Pillowを使ってアニメーションPNG画像を生成します。

アニメーション画像というとGIFが定番です。実際、ネット上にいくつもあるアニメーション画像生成サービスは、ほとんどすべてがGIFを対象にしています。しかし、最大256色しか使えないという制約のあるGIFの表現力は高くありません。アニメーション機能は魅力的ですが、計算機能力の低かった1989年生まれの仕様では、昨今ではさすがに見劣りがします。

これに対し、2004年に発表されたAnimation PNG(APNG)ならフルカラーのままアニメーションが作れます。残念ながら正式なPNGの仕様には含まれないことになりましたが、たいていのブラウザがサポートしてます。

アニメーションのできる画像は他にもWebpAVIFがあります。Pillowは前者をサポートしています。

生成スクリプトはPythonで書きます。汎用的でありながら手軽に使え、利用者も情報も多く、実行環境を問わないPythonは昨今ではスタンダードと呼んでもよいくらいのプログラミング環境です(エンジニアが使っている言語のランキングがStack Overflow Developer Surveyから調べられます)。

本セミナーを修了することで、Python+Pillowによる画像処理にストレスなく付き合えるようになります。

プログラム

APNG画像は次の要領で作成します。

  • 指定のディレクトリ配下にある画像ファイルのリストを得る。
  • 上記のすべての画像を読み込む。
  • すべての画像サイズから、最適なAPNG画像サイズを決定する。
  • 画像サイズを揃える。
  • APNGを生成する。

ちなみに、サイズ不揃いのまま強引に作製すると、適切に表示されなくなります(挙動はビューワー依存。左がGIF、右がPNGのもの)。

受講対象者

主な対象はWebデザイナ、あるいは簡単なところから画像処理を学ぼうと考える学生さんやソフトウェアエンジニアです。

受講者はPythonの基本、たとえば基本データ型、ループ、関数などは理解しているとして話を進めます。

内包表記([x**2 for x in range(10)]の類)などちょっと凝った言語仕様やあまり使わない標準ライブラリは、必要に応じてその都度説明します。

実習環境

レクチャーと歩調を合わせて実際に試してもらえれば、理解が進みます。環境は、Pythonが実行可能ならなんでもかまいません。講師はWindows Subsystem for Linuxを利用します。

次のようにインタラクティブモードで1行ずつ試しながら進行します。

$ python
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> x = 'hello world'
>>> x
'hello world'

本ワークショップでは、外部パッケージのPillowを使います。用意がなければ、次の要領でインストールしてください。

$ pip install pillow

オンライン環境はいろいろあります。講師の好みはPythonAnywhereです。たいていのパッケージがすでに用意されているので、自力でpipするこ必要がほとんどありません。しかも、無償です(ユーザ登録は必要)。

参考資料