我会解释一下我的情况。
我们有一个城市的岛屿。这些可能是:
所以我们得到了3个“城市” - 图像和岛屿图像,看起来像这样:
现在我们想把这些城市的图像放在岛上的图像上。例如,我们将岛上没有人拥有的城市放在这样的地方:
<?php
// Get image
$im = imagecreatefrompng('island.png');
imagealphablending($im,true);
// Get our "Free-city-position" image
$stamp = imagecreatefrompng('free.png');
$pos_x = 190 - 15; // Position X = 190 - the half of the free.png image = 30 / 2 = 15
$pos_y = 225 - 15;// Position Y = 225 - the half of the free.png image = 30 / 2 = 15
imagealphablending($stamp,true);
imagecopy($im, $stamp, $pos_x, $pos_y, 0, 0, imagesx($stamp), imagesy($stamp));
// Output image
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
现在有我们的问题:城市形象在岛屿图像上不透明!它看起来像这样:
我认为imagealphablending
可以做到这一点,但不幸的是,它没有。
我们怎样才能在岛上获得透明的城市形象?
答案 0 :(得分:0)
取自PHP对GD功能的评论:
如果您尝试将透明图像复制到另一张图像上,则表示您 可能会假设您应该将ImageAlphaBlending函数应用于 具有透明度的图像,源图像。实际上,你 必须将ImageAlphaBlending函数应用于目标图像。 基本上它说,&#34;使指定的图像尊重 transparancy&#34;
答案 1 :(得分:0)
尝试这种方式:
#!/usr/bin/php -f
<?php
// Read island image and get dimensions
$island=imagecreatefrompng("island.png");
$w_island=imagesx($island);
$h_island=imagesy($island);
// Read city image and get dimensions
$city= imagecreatefrompng("city.png");
$w_city=imagesx($city);
$h_city=imagesy($city);
// Create output image
$result=imagecreatetruecolor($w_island,$h_island);
imagesavealpha($result,true);
$transparent=imagecolorallocatealpha($result, 0, 0, 0, 127);
imagefill($result, 0, 0, $transparent);
// Splat island onto transparent background
imagecopy($result, $island, 0, 0, 0, 0, $w_island, $h_island);
// Splat city ontop
imagecopy($result, $city, 100, 280, 0, 0, $w_city, $h_city);
imagepng($result,"result.png");
?>