gpt4 book ai didi

PHP+GD : imagecopymerge not retaining PNG transparencies

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:02 24 4
gpt4 key购买 nike

我有两个 PNG 文件,“red.png”和“blue.png”;它们大部分都是透明的,但在不同的地方有一些红色或蓝色 Blob 的像素。

我想制作一个合并两者的 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);

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

imagealphablending($original, false);
imagesavealpha($original, true);

(在原始和覆盖上?)这似乎没有任何帮助。

我在 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));

,它应该将 PNG 转换为“真彩色”图像并保持透明度。它似乎确实如此,但现在我所看到的只是黑色背景上的蓝色。

我该怎么办?!

最佳答案

这非常适合我:

$img1 = imagecreatefrompng('red.png');
$img2 = imagecreatefrompng('blue.png');

$x1 = imagesx($img1);
$y1 = imagesy($img1);
$x2 = imagesx($img2);
$y2 = imagesy($img2);

imagecopyresampled(
$img1, $img2,
0, 0, 0, 0,
$x1, $y1,
$x2, $y2);

imagepng($img1, 'merged.png', 0);

PHP 版本 5.3.2
GD 2.0版本
libPNG 版本 1.2.42

您是否尝试过将图像保存到文件并进行检查?

关于PHP+GD : imagecopymerge not retaining PNG transparencies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3355993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com