我很难将这个透明的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);
?>
答案 0 :(得分:0)
仅使用imagecopymerge()和真彩色图像复制透明度,而不是使用imagecopy()或pallete图像复制透明度。
答案 1 :(得分: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);
?>
只需要调整它,这应该不是问题!