У меня есть два файла 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);
Когда я запускаю этот скрипт, все, что я получаю, это синие точки - с потерей прозрачности. Я видел, что я должен добавить это:
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 в изображение «истинного цвета» и сохранить прозрачность. Кажется, это так, но теперь я вижу только синий на черном фоне.
Что мне делать?!