当将PNG复制到另一个PNG时,不尊重透明度



我有一个艰难的时间得到这个透明的PNG(地图标记)是透明的复制到更大的PNG(雷达图像)。我尝试过很多不同的方法,但都失败了。这一定是一些奇怪的东西,因为如果我用一个矩形填充颜色,并应用地图标记,透明度是尊重的。虽然我还在研究这个问题,但我现在被难住了。

下面我包含了dropbox链接到两个图像和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);
?>

地图标记雷达图像

文档如下:

透明度只能用imagecopymerge()和真彩色图像复制,不能用imagecopy()或调色板图像复制。

我明白了!当我在跑步机上的时候,我明白了!=)

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

只需要调整它的大小,这应该不是一个问题!

最新更新