The Anatomy of Transparency: 透過されていないPNGを見抜いて白背景を除去する

  • #Transparency
  • #ChromaKey
  • #Sharp
  • #Quality
  • #NTM
The Anatomy of Transparency: 透過されていないPNGを見抜いて白背景を除去する

The Anatomy of Transparency

アイコンの容量を WebP で削ったあと、次にぶつかったのは透過の問題だった。

問題:透過されていない白背景

WebP への変換を終えて完璧だと思った直後、おかしな現象に気づいた。 「透過されているはずの PNG」から作った WebP が、ポータルの背景の上で「白い四角い箱」になっていた。

画像のメタデータを調べると、こうだった。

  • format: “jpeg”
  • hasAlpha: false

拡張子は .png だが、実体はアルファチャンネル(透過層)を持たない 3 チャネルの JPEG だった。 素材の PNG が透過されていない以上、単純に WebP へ変換しても「不透明な白」は「不透明な白」のまま残る。

対応:Chroma Key で白背景を除去する

素材を差し替える手もあるが、変換側で機械的に落とすことにした。 convert_icons.js に**白背景自動除去(Chroma Key)**を組み込む。 sharpraw ピクセル操作で、輝度が 245 を超える「ほぼ白のピクセル」を検出し、そこをアルファ値 0(透明)に書き換える処理だ。

結果:透過が通った

この処理で、白枠に囲まれていたアイコンから背景が抜け、透過が通った。 ポータルのグラデーション背景の上でも、キャラクターが違和感なく馴染む。

容量だけでなく、こうした見えにくい品質も詰めておく。情報の「解像度」はピクセル数だけでなく、こういう仕上げの精度でもある。


ZashStudio 技術監修
2026-04-03