почему мое изображение не является прозрачным, тогда как я использую imagecolortransparent ()

Я хочу изображение короны, покрывающей женскую голову, и лицо женщины видно. Помоги мне
Мой код:

// First we create our stamp image manually from GD
$stamp = imagecreatefrompng('http://depictfoll.net/face/php-facedetection-master/Untitled-2_clipped_rev_1 (1).png');
$black = imagecolorallocate($this->canvas, 0, 0, 0);
imagecolortransparent($this->canvas, $black);

// Set the margins for the stamp and get the height/width of the stamp image
$marge_right = 0;
$marge_bottom = 0;
$sx = imagesx($stamp);
$sy = imagesy($stamp);// Merge the stamp onto our photo with an opacity of 50%
imagecopymerge($this->canvas, $stamp, $this->face['x']+$this->face['w'] - $sx - $marge_right, $this->face['y']+ $this->face['w'] - $sy - $marge_bottom, 0, 0, imagesx($stamp), imagesy($stamp), 100);
//$color = imagecolorallocate($this->canvas, 33333, 0, 0); //red

header('Content-type: image/png');
imagepng($this->canvas);

результат:
введите описание изображения здесь

0

Решение

Вот как это работает для меня 🙂

Сначала проверьте, если ваше новое изображение создано в истинном цвете:

$this->canvas = imagecreatetruecolor($width, $height);

Затем выполните следующее для вашего нового изображения:

imagesavealpha($this->canvas, true);
imagealphablending($this->canvas, false);

$background = imagecolorallocatealpha($this->canvas, 0, 0, 0, 127);
imagefill($this->canvas , 0, 0, $background);

По сути, здесь вы устанавливаете альфа-канал для вашего нового изображения и заполняете его прозрачным цветом. Затем вы можете скопировать свои вещи поверх этой прозрачности.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]