見出し画像

PythonでLINEスタンプのアニメーションスタンプ(APNG)を出力するまでの道のり


ここで得れること

Pythonを使ってAPNGを作るコードを公開します(有料)ただし、経緯を伝えて、ここまで到着するのに時間がかかったことをお伝えします。

経緯

皆さんはLINEスタンプを作成していますか?
LINEスタンプでは、「スタンプ」と「絵文字」はアニメーションで作成することができるようになりました。私もスタンプ作成をしているのですが、アニメーションスタンプって作れるのかな?と思って作ってみました。

静止画は楽できた。

インターネット検索しながら調べて作るのは、本当に今風ですね。で、Adobe Illustratorでスタンプや絵文字のテンプレートは見つけたので、それでサクッと作成して、一気に出力して作りました。なるべく楽したいという気持ちがあったので、すみません…

アニメーションも楽できた。

動画を作るときに、1フレームずつ作るのは大変だなと思って、それならAdobe PremiereProでキーフレームアニメーションを作ろうと思いました。静止画は普通のスタンプと絵文字で申請できたので、この素材をそのまま使ってアニメーションを作れば楽ができそうだなと思って、作成しました。

最終的に、APNGで登録をすることをネットで調べていたので、5枚から20枚までのPNGを作成することにしました。さくっとPremiereProでキーフレームアニメーションを作りました。これはネットに方法が載ってなかったので多分こうだろうと思うやり方で作成しました。

PremiereProの操作説明

新規プロジェクトを作成して、新規シーケンスを作成。この時に例えば「絵文字」だと、縦180px×横180pxでシーケンスのキャンパスを設定しました。フレームレートは、何となく10fpsにしました。どうせ、PNGを出力するだけなので、再生速度は気にしないだろうという気持ちと、プレビューしたときに、早すぎたら困るかなと思ってそれに。

絵文字の場合、シーケンスの名前は、「Emoji_anime_001」「Emoji_anime_002」という名前で念のため040までシーケンスを作成しました。絵文字って、8から40まで自由に作れるので、作成した静止画絵文字が40個だったら、流用しないのはもったいないかなと思って40個シーケンスも作りました。※この時の名前は、後のPythonのコード内で影響あります

タイムラインの秒数表示をクリックして、フレーム表示に。これで何フレーム目かというのがわかるようになりました。それでアニメーションを作りました。それだけです。最後に作成が終わったらMediaEncorderに出力させました。終わり。

APNG作成の続きです。

MediaEncoerderで、PNGを作成すると無事、必要な枚数のPNGが出力されます。このあと、このPNGをどう使うかというと…

APNG作成の王道は、「アニメ画像に変換する君」

MediaEncorderでは、APNGは直接作れない。どうやっても作れない。裏技も探したがない。だったら別のソフトだ思って調べると、Windowsだと、「アニメ画像に変換する君」でやれという情報ばかり出てきました。でやりましたが‥

「アニメが画像に変換する君」はめんどくさい

「アニメが画像に変換する君」のを起動して、出力した画像を選択(ここが、いちいち、出力したファイル名を見ながら選択するのが地味に面倒)して、ファイル名を指定して、保存。これを8回から40回繰り返す…これがすごく面倒に感じた。

この作業が苦痛で仕方がなかったので、何とか、RPAとかで出来ないか試行錯誤しましたが、安定で記録すること、また動作させることができませんでした。ネットで調べ、RPAを駆使してそれでもできない。そんな皆さんはこの記事の読者にベストマッチしています。どうしようか、悩みましたが、そんなときにふと頭に浮かんだのは…

Pythonえもんと、生成AI!

〇〇えもん!助けてで、映画は始まることが多いので思いだしました。
まあ、Pythonで誰かライブラリとかも作っているから、生成AIを使ったら何とかなるかな、と思って、生成AIに質問をしました。「LINEスタンプのアニメーションのためにPythonでAPNGを作成するプログラムを作って」と質問してみました。で、今に至りますが…

生成AIのわからずや!

APNGは以外と簡単に出力できた。でも登録しようとすると、「再生時間は1秒、2秒、3秒、4秒を指定してください」というエラーがでて解決できない。生成AIに何度もそうお願いしても、「やりますね!」といって出してきたコードによってAPNGを作成しても、エラーの繰り返し。

お酒を飲んで生成AIを罵倒してみる

寝る前だったので、お酒を飲むとイライラが増してきて、生成AIに「なぜできないんだ馬鹿者!」「一体お前を動かすのにどれぐらい学習をさせているんだ!」など、AIハラスメントのコメントを入力するも、結果は変わらず。アメとムチどちらも変わらずでした。

最後のヒント

Pythonで出力したAPNGと、「アニメが画像に変換する君」で出力したAPNGをにらめっこ。成果にはPNG情報を調べるツールがあったので、見比べて、ようやく結論がわかった。

ここからコードの公開は有料

微調整を行いようやく、完成!無事出力したものを登録できました。
この先サンプルコードと原因を載せています。ここまでのお酒代を手に入れるべく有料公開とさせてください!

みなさんの楽をしたいという気持ちが解決できますように

ここから先は

2,544字

¥ 300

この記事が気に入ったらチップで応援してみませんか?