Объединяет прозрачные изображения в одно, используя GD, оставаясь прозрачным

У меня есть прозрачное изображение и текст шире, чем изображение, я пытаюсь встроить текст по центру в верхней части прозрачного изображения и получить окончательное прозрачное изображение PNG, я сгенерировал прозрачный текст в виде контейнера с шириной и высотой но в сочетании с изображением он идет с черным фоном

function createImageServer($name, $state)
{
$path = 'js/FusionCharts/FusionCharts_XT_Website/Charts/Resources/';
$server = $path . 'server' . $state . '.png';

list($width, $height, $type, $attr) = getimagesize($server);

$font_path = 'images_machines/FreeSans.ttf';

$bbox = imagettfbbox(10,0,$font_path,$name);

$diffHeight = 5;

$fontHeight = ($bbox[1] - $bbox[7]) + $diffHeight;
$textWidth = $bbox[2] + $bbox[0];

$dstimage = imagecreatetruecolor($textWidth,$height + $fontHeight);
imagealphablending($dstimage, false);

//Create alpha channel for transparent layer
$col=imagecolorallocatealpha($dstimage,255,255,255,127);
imagefilledrectangle($dstimage,0,0,$textWidth, $height+$fontHeight,$col);
imagealphablending($dstimage,true);
imagefttext($dstimage,10,0,0,$fontHeight-$diffHeight,0,$font_path,$name);$srcimage = imagecreatefrompng($server);
imagealphablending($srcimage, false);

imagecopymerge($dstimage,$srcimage,($textWidth/2)-($width/2),$fontHeight,0,0,$width,$height,100);
imagealphablending($dstimage, true);
imagesavealpha($dstimage, true);

$pathImage = 'images_machines/' . $name . '.png';imagepng($dstimage,$pathImage);

imagedestroy($dstimage);
imagedestroy($srcimage);

return $pathImage;
}

Исходное изображение:

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

Результирующее изображение:

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

1

Решение

Замените ваш звонок на imagecopymerge с imagecopy (измените имя функции и удалите последний параметр):

//imagecopymerge($dstimage,$srcimage,($textWidth/2)-($width/2),$fontHeight,0,0,$width,$height,100);

imagecopy($dstimage,$srcimage,($textWidth/2)-($width/2),$fontHeight,0,0,$width,$height);

Результат:

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

0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector