Dots

ブログとか

プロフィール画像生成ツール

プロフィール画像生成ツールを作った。


最近はAIが勝手にコードを書くので、作ってもらったと言った方が正しい。

作った理由

WEBサイトで、プロフィール画像で写真をアップロードできるようにすると、全く同じにもできるし、変な写真を上げることも可能だし、ストレージ用意しないといけないし大変だなと思った。

自分で適当に生成できるようにしたら管理が楽なんじゃねえかなと思って作った。

自分は単なる実験の延長の成果物を公開しているだけで、役に立つものを作っているわけではないので、多分役には立たないが、自分としてはいろいろ発見があったので良しとしている。

仕組み

いくつかの要素(名前、スタイル、色、ハッシュ文字列)を組み合わせることで、いろんなパターンを生成可能。

ハッシュ(ていうかランダムシード値)を元に生成するため、URLをコピーして貼り付けると、何度やっても同じ画像が生成されるはず。

冪等性

このURLをbase64にでもしておけば、ちょっとした文字列(120文字くらい)で個性的な画像を表現できるようになって、ストレージが要らなくて、便利かもしれんと思っている。

ただ、アルゴリズムがアップデートした場合、勝手に画像が変わってしまわないために、アルゴリズムにバージョンをつける必要があったりはすると思う。

圧縮アルゴリズムとエントロピーの話

昔、プログラマーの先輩と、圧縮アルゴリズムについて話していたとき、 「圧縮のアルゴリズムは頑張って探求しても、どうせエントロピーという理論的限界を超えられないことがわかっているので、つまらん」という話を聞いたことがある。

それはその通りだと思ったが、もはや汎用的な圧縮ではなくても、偏ったデータや、特定のパターンの組み合わせならば、外部に巨大な辞書を用意することで、個別ファイルサイズを小さくできるケースもあるな〜と思っていた。

このプロフィール画像生成ツールは、まさにそれに近いかも。

実際これによって生成したアバターのPNGファイルは 200KB(200,000B) くらいになり、それを100B 程度で表現できるので、サイズが 1/2000 になっており、 99.95% もサイズが減少している。

もちろんそれは圧縮とは呼べないが、特定の用途に特化したデータを小さくするということには意味がある。

ランダムシードによって変化する画像の生成パターンがあと100個くらい増えても、特定の画像のサイズはあんまり増えない。