2016-08-10 11 views
1

У меня есть грубое время, чтобы этот прозрачный PNG (маркер карты) был прозрачным, скопировавшись на более крупный PNG (радарное изображение). Я пробовал несколько разных вещей, и все провалилось. Это должно быть что-то причудливое, потому что, если я использую прямоугольник, заполненный цветом, и применяю маркер карты, прозрачность соблюдается. Я в тупике, хотя я все еще работаю над проблемой.PHP: прозрачность не соблюдается при копировании 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); 

?> 

map marker

radar image

ответ

0

В documentation гласит:

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

+0

Я пробовал это также с imagecopymerge. Я прошел весь диапазон от 0 до 100, останавливаясь посередине. Все, что он делал, - это постепенное исчезновение объединенного изображения, а не наложение его на прозрачность. – Handler

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); 

?> 

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