Я пытаюсь сделать изображение прозрачным, используя библиотеку GD из PHP, но выполняю следующий код, только часть будет прозрачной

Я пытаюсь сделать изображение прозрачным, используя библиотеку GD из PHP, но выполняю следующий код, только часть будет прозрачной.

$image = imagecreatefrompng("$second");
imagealphablending($image, false);
$col_transparent = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $col_transparent);  // set the transparent colour as the background.
imagecolortransparent ($image, $col_transparent); // actually make it transparent
imagesavealpha($image, TRUE);
header( 'Content-Type: image/png' );
imagepng($image);

Здесь у вас есть оригинальное изображение: https://postimg.org/image/y68nw57z1/
Вот итоговое изображение: https://postimg.org/image/o4n3t6ic7/

Как вы можете видеть, из полученного изображения существуют части, которые остаются белыми.
Как я могу решить это?

1

Решение

Вы замените белые пиксели своего изображения заливкой, но это не сработает с пикселями, которые полностью заключены в небелые пиксели (как в любой программе рисования). Вместо этого вы можете изменить определение белого цвета, чтобы сделать его прозрачным:

$image = imagecreatefrompng($second);
imagetruecolortopalette($image, false, 255);
$index = imagecolorclosest($image, 255, 255, 255); // find index of white.
imagecolorset($image, $index, 0, 0, 0, 127); // replace white with transparent black.
header('Content-Type: image/png');
imagepng($image);
0

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

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

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