見出し画像

【Google AI Studio】時短クッキング No.35:APNG形式からアニメGIF形式に変換するアプリ

「時短クッキング No.34」では、PNG形式を拡張したアニメーション対応の画像フォーマット
APNG(Animated PNG) のデータを作成しました。
今回は、そのAPNGを アニメGIF形式に変換するアプリ を作りました。




NoteがAPNG形式に対応していない

「時短クッキング No.34」の記事を作っていて、ひとつ気が付いたことがあります。
それは、APNG形式の画像をNoteに貼り付けても、アニメーションしてくれないという点です。

APNG形式のアニメ画像(Noteで動かない)

一方、アニメGIF形式であれば、Noteに貼り付けても正しくアニメーションします。
そこで必要になったのが、APNG形式 → アニメGIF形式に変換するアプリ というわけです。

アニメGIF形式のアニメ画像(Noteで動く)





APNG to GIF Masterの使い方

これを形にしたのが、「APNG to GIF Master」 というAPNG→アニメGIF変換アプリです。
起動すると、次のような画面になります。

❶ 起動画面

起動画面

❷ APNG画像をドラッグ&ドロップ

右側の「Drop your APNG file here」という点線枠に、APNG画像をドラッグ&ドロップするか、
「Select File」ボタンを押してファイルを選択します。

APNG画像が読み込まれると、即座にアニメGIFへ変換され、プレビュー表示されます。
透明部分は、「check(格子)」「white(白)」「black(黒)」ボタンで切り替え可能です。

左下には、変換後の カラーパレット が表示されます。
左上の「T」の文字が付いた色(パレットカラー0)が 透明パレット です。

プレビュー表示後の画面
透明部を「BLACK」(黒)に切り替えた例
白縁確認用

❸ 設定ウィンドウの項目

左上にいくつかの設定項目があります。
各項目を操作すると、その場で再変換が行われ、プレビューに即時反映されます。

  • 透過を有効にする
    透明パレットを「透明として扱う(オン)」か、「通常色として扱う(オフ)」かを選択します。
    デフォルトはオンです。

  • 背景色(マットカラー)
    「透過を有効にする」をオフにした場合に、透明パレット部分を塗りつぶす色を指定します。
    ※「透過を有効にする」をオンにすると、「背景色(マットカラー)」は無効になります。

「透過を有効にする」をオンにすると「背景色(マットカラー)」が有効になります。
  • 透過閾値 (Alpha)
    APNGのアルファチャンネルのうち、どこまでを透明パレットに割り当てるかの
    閾値(しきいち) を調整します。

このパンダの白枠にはアルファチャンネルで「ぼかし」がかかっているので
閾値を上げると白枠が侵食されて白枠幅が狭くなる。

❹ 変換したファイルをダウンロード

「Download GIF」ボタンをクリックすると、アニメGIFがダウンロードされます。
「RESET」ボタンをクリックすると、プレビューが破棄され、初期画面に戻ります。

「Download GIF」ボタン(青色)をクリックするとアニメGIFがダウンロードされる。





APNGからアニメGIFへの変換アルゴリズム

APNGとアニメGIFはいずれも、複数の画像を連続表示することで動きを表現する画像フォーマットです。
ただし、仕組みと表現力には大きな違いがあります。

APNGはPNGを拡張した形式で、フルカラー表示と半透明表現(アルファチャンネル) に対応しています。
一方、アニメGIFは 256色パレット制限 があり、透明表現も「透明」か「不透明」かの二択です。

つまり、変換作業の肝は、
この表現力の差をどう埋めるか にあります。

今回採用したアルゴリズムは、次のとおりです。

  • アニメGIFの パレットカラー0 を透明パレット用としてリザーブ

  • APNGのフルカラー情報を減色し、パレットカラー1〜255 に割り当て

  • APNGのアルファチャンネルを、リザーブしたパレットカラー0に割り当て
    (スライダーで透明閾値を調整可能にする)

  • パレットカラー0を透明として設定

※:ループについては、APNGの設定に関係なく無限ループに再設定しています。アニメGIFは動いてナンボじゃないかと・・・





関連URL

本アプリは次で公開しています。

シェアURLはこちらです。





まとめ:急遽作りました

冒頭でも触れましたが、本アプリは NoteでAPNGがアニメーションしない ことに気付き、急遽作成しました。
結果として、「APNG(Animated PNG)」作成ツールが、GIFアニメ作成用ツールとしても使える ようになりました。

Noteのおかげですね。

以上!

いいなと思ったら応援しよう!

ROROSUKE LABO 記事なり、プログラムなりが役に立ったと思った方は、 チップの応援よろしくお願いいたします。 次の開発もがんばろうかな、という気になりますのだ (笑)