Fusionando un png en un polígono en php

Estoy confundido, bash dibujar un polígono y ponerlo como una capa con ventanas transparentes. Sin ningún éxito. Una vez que el fondo es blak, una vez el polygone se vuelve invisible.

aquí está mi código php:

header ("Content-type: image/png"); // The png layer $png = imagecreatefrompng("./300.png"); imagealphablending($png, false); $largeur_source = imagesx($png); $hauteur_source = imagesy($png); // The polygon $polygon_image = imagecreate($largeur_source,$hauteur_source); $polygon_image_background = imagecolorallocate($polygon_image, 255, 255, 255); imagecolortransparent($polygon_image, $polygon_image_background); // On rend le fond blanc transparent $polygon_color = imagecolorallocate($polygon_image,100, 200, 225); $polygon = array(0,0, 982,0, 982,48, 6,48, 6,53, 0,47, 0,0 ); imagefilledpolygon($polygon_image , $polygon , 6 , $polygon_color); imagecopymerge($polygon_image, $png, 0, 0, 0, 0, $largeur_source, $hauteur_source,100); // black ! //imagecopy($polygon_image, $png, 0, 0, 0, 0, $largeur_source, $hauteur_source); // transparent but no polygon.. imagepng($polygon_image); 

He googeled durante horas, probando muchas cosas, pero …

Gracias por adelantado

No puedo explicar por qué exactamente tu código no funciona como se esperaba, pero déjame proponer un enfoque ligeramente diferente:

Primero, crea una imagen de color verdadero en lugar de solo una imagen “normal”:

 $polygon_image = imagecreatetruecolor($largeur_source, $hauteur_source); 

Luego dibuja el polígono, etc. de la siguiente manera:

 // ... $polygon = array(/*...*/); // Make the whole image transparent imagefill($polygon_image, 0, 0, $polygon_image_background); // Draw the polygon imagefilledpolygon($polygon_image, $polygon, 6, $polygon_color); // Enable alpha blending imagealphablending($polygon_image, true); // Initialize the brush with the png imagesetbrush($polygon_image, $png); // Merge the two images by drawing the brush (png) exactly once // right in the middle of the polygon image: imageline($polygon_image, $largeur_source / 2, $hauteur_source / 2, $largeur_source / 2, $hauteur_source / 2, IMG_COLOR_BRUSHED);