прозрачность — PHP GD — прозрачный PNG черный фон

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

//setup
switch ($source_type) {
case IMAGETYPE_JPEG:    $source = imagecreatefromjpeg($img_path);   break;
case IMAGETYPE_PNG:     $source = imagecreatefrompng($img_path);    break;
}

// setup cropped destination
$cropped = imagecreatetruecolor($cropped_width, $cropped_height);

// create cropped image
$x = (($source_width / 100) * IMAGE_X) - ($cropped_width / 2);
$y = (($source_height / 100) * IMAGE_Y) - ($cropped_height / 2);
imagecopy(
$cropped,
$source,
0, 0,
$x, $y,
$cropped_width, $cropped_height
);

// output inc header
header('Content-type: image/jpeg');
imagejpeg($cropped);

1

Решение

Это должно быть что-то вроде:

switch ($source_type)
{
case IMAGETYPE_PNG:

$background = imagecolorallocate($source, 0, 0, 0);
// remove the black
imagecolortransparent($source, $background);

// turn off alpha blending
imagealphablending($source, false);imagesavealpha($source, true);

break;
}

Есть похожий вопрос Вот

2

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

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