相关疑难解决方法(0)

PHP + GD:imagecopymerge不保留PNG透明胶片

我有两个PNG文件,"red.png"和"blue.png"; 它们都是透明的,但在不同的地方有一些像素的红色或蓝色斑点.

我想制作一个融合两者的PHP脚本; 它应该像以下一样简单:

$original = getPNG('red.png');
$overlay = getPNG('blue.png');

imagecopymerge($original, $overlay, 0,0, 0,0, imagesx($original), imagesy($original),   100);
header('Content-Type: image/png');
imagepng($original);
Run Code Online (Sandbox Code Playgroud)

当我运行这个脚本时,我得到的只是蓝点 - 透明度丢失了.我看到我应该添加这些:

imagealphablending($original, false);
imagesavealpha($original, true);
Run Code Online (Sandbox Code Playgroud)

(在原始和重叠上?)这似乎没有任何帮助.

我在PHP.net上看到了一些解决方法,可以解决这个问题:

$throwAway = imagecreatefrompng($filename);
imagealphablending($throwAway, false);
imagesavealpha($throwAway, true);
$dstImage = imagecreatetruecolor(imagesx($throwAway), imagesy($throwAway));
imagecopyresampled($dstImage, $throwAway,0,0,0,0, imagesx($throwAway),     imagesy($throwAway),          imagesx($throwAway), imagesy($throwAway));
Run Code Online (Sandbox Code Playgroud)

,它应该将PNG转换为"真彩色"图像并保持透明度.它确实似乎这样做了,但现在我看到的只是黑色背景上的蓝色.

我该怎么办?!

php png transparency gdlib

5
推荐指数
1
解决办法
6548
查看次数

标签 统计

gdlib ×1

php ×1

png ×1

transparency ×1