見出し画像

【Google AI Studio】時短クッキング No.36:APNG形式の画像をLINEスタンプ審査基準へ自動で最適化するアプリ

必要に迫られて、APNG画像の解析アプリを作りました。
アニメーション制御情報から、チャンク構造のリストまで、赤裸々に表示します。

これに加えて、タイトルにもなっている

LINEスタンプ審査基準へ自動で最適化する機能

を実装しました。
かなりマニアックなツールですが、興味のある方はお付き合いください(笑)。




APNG形式のファイルをアナライズ(分析)

このところ、PNG形式を拡張したアニメーション対応の画像フォーマット
APNG(Animated PNG) の関連アプリばかり作っています。

それらが「正しく作られているか」を確認するため、今回あらためて解析用アプリを作りました。
使い方は次のとおりです。

❶ 対象となるファイルを読み込む

「PNG / APNG 解析 & 修正」の枠内に、ファイルをドラッグ&ドロップするか、クリックしてファイルを選択してください。

枠内にPNG / APNG画像をドラッグ&ドロップする

❷ 分析した情報が表示される

ファイル情報が画面に表示されます。

APNG画像を読み込んだ画面

解析結果の各項目については次節から解説します。





PNG/APNG 解析結果の詳細解説

PNGファイルは「チャンク」と呼ばれるデータの塊で構成されています。本ツールでは、それらのチャンクを分解し、画像がどのように構成されているかを見える化しました。

1. 基本情報(IHDRチャンク)

すべてのPNGファイルの先頭にある最も重要な基本データです。

  • サイズ(幅 × 高さ): 画像のピクセル単位の大きさです。LINEスタンプ用では偶数である必要があるため、奇数の場合は数値が赤色で強調されます。

  • カラータイプ(Color Type): 画像の色情報の形式です。ツールでは以下の通り表示されます。

    • RGB: 赤・緑・青の3色。

    • RGBA: RGBに「アルファチャンネル(透明度)」を加えた形式。

    • パレット形式: 最大256色を番号で管理する軽量な形式。

    • グレースケール: 白黒(または白黒+透明)の情報。

  • ビット深度(Bit Depth): 1チャンネルあたりの情報量です(通常は 8-bit)。

  • フレーム数: アニメーションを構成する総コマ数です。静止画の場合は「1」と表示されます。

  • IHDR 詳細情報:

    • 圧縮手法: データの圧縮方式(通常は Deflate)。

    • フィルタ手法: 圧縮率を高めるための前処理方式。

    • インターレース: Web表示時に段階的に画像を出す設定。LINE用では「なし」が推奨されます。

基本情報

2. アニメーション制御(acTLチャンク)

このデータが含まれる場合、ファイルは「APNG(アニメーションPNG)」として認識されます。

  • 1ループ再生時間: アニメーションが最初のコマから最後のコマまで1回再生される時間です(例:1.000秒)。

  • ループ回数: アニメーションを繰り返す回数の設定です。

    • 無限 (0): 止まることなく再生し続けます。

    • 1回〜4回: 指定回数再生したあと、最後のコマで停止します。LINEスタンプの規定(1〜4回)に合致するとチェックマークが表示されます。

  • 総再生時間: 1ループ時間 × ループ回数 で計算される、再生が始まってから完全に停止するまでの合計時間です。LINEの規定(合計4秒以内)を超えると警告が表示されます。

アニメーション制御

3. フレーム制御情報(fcTLチャンク)

アニメーションの各コマ(フレーム)の「表示時間」「描画サイズ・位置」「合成方法」を定義する重要なデータです。

  • 再生時間 (Delay): そのコマが停止する長さです。Delay Num(分子) / Delay Den(分母) で計算され、ツール上では直感的にわかるよう 秒換算(例: 0.100s) も併記しています。

  • サイズ / オフセット: コマの「描画サイズ(width × height)」と「描画位置(x, y offset)」を示します。APNGは変化した部分だけを上書き描画することで、データ容量を節約する仕組みを持っています。

  • 操作設定(破棄 / ブレンド):

    • 破棄操作 (Disposal Op): 次のコマを描画する前に、現在の描画エリアをどう処理するかを決定します(そのまま残す、背景色で消去、または一つ前の状態に戻す)。

    • ブレンド操作 (Blend Op): 前のフレームに対して、画像を「そのまま上書き(Source)」するか、透明度を考慮して「α合成(Over)」するかを制御します。

フレーム制御情報

4. チャンク構造のリスト

解析結果の下部に表示されるテーブルは、PNGファイルのバイナリデータを構成する「情報の塊(チャンク)」を順番に並べたものです。各チャンクのタイプ、位置(オフセット)、データサイズ、CRC(エラー検知符号)を確認できます。

  • IHDR (Image Header): 画像の幅、高さ、色深度、カラータイプなどの基本情報が含まれる、最重要のチャンクです。

  • acTL (Animation Control): APNG特有のチャンクで、アニメーションの総フレーム数やループ回数を定義します。

  • fcTL (Frame Control): 各フレームの表示タイミングや描画位置を制御します(前述の「フレーム制御情報」)。

  • IDAT (Image Data): 静止画(またはAPNGの1枚目)の圧縮された画像データ本体です。

  • fdAT (Frame Data): APNGの2枚目以降の画像データです。fcTLとセットで動作します。

  • PLTE (Palette): インデックスカラー(パレット形式)の場合に使用される色見本データです。

  • tEXt / zTXt: 作成したソフト名、著作権情報、コメントなどのテキスト形式のメタデータです。

  • IEND (Image Trailer): PNGデータの終端を示すマークです。この後にデータが続くことはありません。

このツールは、これらの複雑なバイナリ構造を読み解き、人間が理解できる数値に変換した上で、特定のプラットフォームの規約に照らし合わせて「合格か、修正が必要か」を判断しています。





LINEスタンプ基準チェックについて

LINEのアニメーションスタンプ審査を通過するためには、以下の条件をすべて満たす必要があります。
本ツールでは、解析結果をもとに自動判定を行い、適合していれば緑色、問題があれば赤色で表示します。

1. フォーマット(APNG)

  • 条件: APNG (アニメーション) であること

  • 解説: 通常の静止画PNGではなく、複数のフレームが格納された「動くPNG(APNG)」形式である必要があります。拡張子は.pngのままですが、内部にアニメーション制御用のデータが含まれているかを確認します。

2. カラーモード

  • 条件: RGB形式 (RGB / RGBA)

  • 解説: デジタルデバイスで標準的に使われるRGBカラー、または透明度を含めたRGBAカラーである必要があります。印刷用のCMYKモードや特殊なカラープロファイルが含まれていると、正しく表示されないため審査エラーとなります。

3. 幅・高さ(偶数ルール)

  • 条件: 幅 最大320px / 高さ 最大270px(かつ、それぞれ偶数

  • 解説: LINEのシステム制限により、画像の縦横サイズは必ず「偶数」でなければなりません。1ピクセルでも奇数が混じるとアップロード時にエラーとなります。本ツールでは奇数の場合、1ピクセル削るなどの自動補正を行います。

4. サイズ基準(270pxルール)

  • 条件: 幅または高さのどちらかが「270px以上」であること

  • 解説: スタンプがトーク画面で小さく表示されすぎるのを防ぐためのルールです。最大サイズ(320x270)に収めつつ、少なくとも一辺は270px以上に設定する必要があります。

5. ファイルサイズ

  • 条件: 最大 300KB 以下

  • 解説: アニメーションスタンプにおいて最も厳しい制限です。APNGは高画質な反面、容量が大きくなりやすいため、フレーム数が多い場合は「減色(パレット化)」を行い、色数を絞ることで300KB以内に収める工夫が必須となります。

6. ループ回数

  • 条件: 1〜4回 (0回/無限は不可)

  • 解説: アニメーションが延々と繰り返される「無限ループ」は禁止されています。再生回数は1〜4回に設定し、最後は必ず静止した状態で終わるように設定しなければなりません。

7. 総再生時間

  • 条件: 合計がちょうど 1, 2, 3, または 4秒

  • 解説: 「各フレームの表示時間 × ループ回数」の合計が、1/2/3/4秒のいずれかぴったり(整数秒)である必要があります。例えば「1.5秒」や「4.2秒」といった中途半端な時間は許可されません。





LINEスタンプに関する操作

画面右にアップロードしAPNG画像がプレビューされますが、その下のボタンで、LINEスタンプに関する操作を行うことができます。

🔘「LINE基準で修正」ボタン
LINEスタンプ審査基準への自動最適化

本アプリでは、アップロードされた画像を解析し、LINEクリエイターズマーケットの厳しい審査ガイドライン(300KB制限、偶数ピクセル、整数秒の再生時間、5〜20枚のフレーム数など)に適合するよう、ワンクリックで一括補正を行います。容量がオーバーする場合は、画質を維持しながら自動的に減色処理を行い、アップロード可能なデータへと変換します。

🔘「保存」ボタン
最適化済みファイルのダウンロード

現在プレビューに表示されている、解析・修正済みのAPNGファイルをデバイスに保存します。このファイルはすでにLINEの技術仕様をクリアした状態となっているため、そのままスタンプ編集画面からアップロードして申請に使用することが可能です。

🔘「メイン・タブ画像を生成」ボタン
申請用アクセサリ画像(Main / Tab)の一括作成

スタンプセットの申請に必ず必要となる「メイン画像(240×240px APNG)」と「トークルームタブ画像(96×74px 静止画)」を、現在のスタンプ原画から自動的にリサイズ・生成します。各画像に求められる固有のサイズ制限やファイル形式を自動適用するため、クリエイターが手動で編集ソフトを立ち上げる手間を大幅に削減します。

プレビューとボタン

フレーム1枚のPNG画像の変換も可

フレームが1枚の静止画PNGを読み込んだ場合でも、左右反転を利用した簡易アニメーションとしてAPNG化できます。

1枚絵のPNG画像は左右反転アニメになる





シェアURL

お試しください。





まとめ:アップロード時のエラーを撲滅します

本アプリは、「時短クッキング No.34」で作成した
APNGアニメ作成アプリの姉妹アプリ です。

No.34のアプリで作成したAPNGは、そのままではLINEアニメーションスタンプとして
ほぼ100%エラーになり、アップロードに失敗します。

しかし、本アプリで最適化することで、LINEスタンプ審査基準に適合したデータへ変換できます。

リジェクトを完全に防ぐものではありませんが
(アルファチャンネルの塗りによる指摘が入ることがあります)、
アップロード時の技術的エラーはほぼ回避できるはずです。

LINEのアップロードエラーで困っている方は、ぜひお試しください。

LINEのアップロード時のエラーがほぼなくなります。

以上!





✨ 審査は通った、次は表現の幅を広げたい方へ

よろしければですが、この先の話があります。

エラーをなくすだけでなく、「だんだん速く」「最後だけ長く」など アニメーションの緩急まで調整できるアプリを作りました。

続きはこちらで解説しています。


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

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