PHP: прозрачность не соблюдается при копировании PNG в другой PNG

У меня трудное время, чтобы этот прозрачный PNG (маркер карты) был прозрачным при копировании в более крупный PNG (радиолокационное изображение). Я пробовал много разных вещей, и все потерпели неудачу. Это должно быть что-то странное, потому что, если я использую прямоугольник, заполненный цветом, и применяю маркер карты, прозрачность соблюдается. Я нахожусь в тупике на данный момент, хотя я все еще работаю над проблемой.

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

Спасибо за ваше время и помощь!

<?php

//$im = @imagecreatetruecolor(1440,768) or die("Cannot Initialize new GD image stream");
$im = imagecreatefrompng('new_radar_image.png');

$color_red = imagecolorallocate ($im,255,0,0);
$color_white = imagecolorallocate ($im,255,255,255);
$radar_size_x = imagesx($im);
$radar_size_y = imagesy($im);
$mid_x = $radar_size_x / 2;
$mid_y = $radar_size_y / 2;

// imagefilledrectangle ( $im, 0 , 0 , 1439 , 767 , $color_red );

imageline ( $im, $mid_x , 0, $mid_x, $radar_size_y, $color_white);
imageline ( $im, 0, $mid_y, $radar_size_x, $mid_y , $color_white);

$src_im = imagecreatefrompng('map-marker-icon1.png');
imagecopy ( $im , $src_im , 0  , 0 , 0 , 0 , 128 , 128);

header('Content-Type: image/png');
imagealphablending( $im, false );
imagesavealpha( $im, true );
imagepng($im);
imagedestroy($im);

?>

маркер карты

радиолокационное изображение

1

Решение

документация гласит:

Прозрачность копируется только с изображениями imagecopymerge () и изображениями с истинным цветом, а не с изображениями imagecopy () или паллетами.

0

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

Я понял! До меня дошло время на беговой дорожке! знак равно

<?php

$im = imagecreatefrompng('new_radar_image.png');
$om = imagecreatetruecolor(1440,768);
imagecopy($om,$im,0,0,0,0,1440,768);

$color_red = imagecolorallocate ($om,255,0,0);
$color_white = imagecolorallocate ($om,255,255,255);
$radar_size_x = imagesx($om);
$radar_size_y = imagesy($om);
$mid_x = $radar_size_x / 2;
$mid_y = $radar_size_y / 2;

imageline ( $om, $mid_x , 0, $mid_x, $radar_size_y, $color_white);
imageline ( $om, 0, $mid_y, $radar_size_x, $mid_y , $color_white);

$src_im = imagecreatefrompng('map-marker-icon.png');
imagecopy( $om , $src_im , 0  , 0 , 0 , 0 , 128 , 128);

header('Content-Type: image/png');
imagealphablending( $om, false );
imagesavealpha( $om, true );
imagepng($om);
imagedestroy($om);
imagedestroy($im);

?>

Просто нужно изменить его размер, который не должен быть проблемой!

0