GDはイメージリソースを作ると、黒で塗りつぶすという余計な事をやってくれます。
そのため、まず間違いなく塗りなおす作業が必要です。
ちなみに、ImageMagickやPerlMagickでは xc:none で透明なキャンバスを作れます。
$image = imagecreatetruecolor( $width, $height ); // イメージリソースを作成 imagealphablending( $image, false ); // アルファブレンディングを無効(謎) imageSaveAlpha( $image, true ); // アルファチャンネルを有効(謎) $transparent = imagecolorallocatealpha( $image, 0, 0, 0, 127 ); // 透明度を持つ色を作成 imagefill( $image, 0, 0, $transparent ); // 塗りつぶす
以下のように、透明色だけを設定した場合、
その画像自体では透明になるけれど、他の画像と合成すると透過しなくなる。
// 透明色を灰色に設定(灰色が無い前提)
$transparent = imagecolorallocate( $image, 127, 127, 127 );
ImageColorTransparent( $image, $transparent );