2016-08-10 4 views
1

Ich habe eine harte Zeit, dieses transparente PNG (map marker) transparent zu bekommen, das auf das größere PNG (Radarbild) kopiert wird. Ich habe verschiedene Dinge ausprobiert und alle sind gescheitert. Es muss etwas skurril sein, denn wenn ich ein Rechteck benutze, das mit einer Farbe gefüllt ist und die Kartenmarkierung anwendet, wird die Transparenz respektiert. Ich bin im Moment ratlos, obwohl ich immer noch an dem Problem arbeite.PHP: Transparenz nicht respektiert, wenn PNG auf ein anderes PNG kopiert

Unten habe ich Dropbox-Links zu den beiden Bildern und dem PHP-Code, mit dem ich getestet habe, eingefügt. Sobald die Transparenz geklärt ist, werde ich versuchen, herauszufinden, wie man die Größe der Kartenmarkierung ändert, brauche sie nicht so groß!

Vielen Dank für Ihre Zeit und Hilfe!

<?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

Antwort

0

Die documentation lautet:

Transparenz nur mit imagecopymerge() und farbechte Bilder, nicht mit Imagecopy() oder pallete Bilder kopiert.

+0

Ich habe das auch mit Imagecopymerge versucht. Ich ging die ganze Strecke von 0 bis 100 und blieb in der Mitte stehen. Es hat nur das zusammengefügte Bild ausgeblendet, anstatt es mit seiner Transparenz zu überlagern. – Handler

0

Ich habe es! Es dämmerte mir auf dem Laufband! =)

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

?> 

Sie müssen nur die Größe ändern, was kein Problem sein sollte!