透明はなぜ市松模様で表示される? 存在しない色を描く方法

RGBAの4つの値
R
G
B
A 透明度

透明は「背景と同じ色」ではない

白背景を消すために画素を白く塗っても、黒いページへ置けば白い四角が見えます。透明画素は、背景へどれだけ色を混ぜるかを示すアルファ値を持ちます。完全透明なら下の色だけ、半透明なら上下が混ざります。

市松模様は明るい物も暗い物も見分けやすく、透明部分との境界を確認できる表示上の約束です。書き出したPNGへ市松模様そのものが入るわけではありません。

透明なのにRGB値が残ることがある

アルファが0で完全に見えない画素にもRGB値を保持できます。画像を拡大縮小すると周囲と補間され、その隠れた色が輪郭の白い縁や黒い縁として現れる場合があります。

透明度を先に色へ掛けて保存するプリマルチプライドアルファと、掛けずに持つストレートアルファの扱いが一致しない場合も縁取りの原因になります。

JPEGに透明がない理由

一般的なJPEGは写真の色を効率よく圧縮する規格で、アルファチャンネルを標準的に持ちません。透明背景を保つにはPNG、WebP、AVIFなど対応形式を選ぶ必要があります。

参考資料