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

То, когда я запускаю этот скрипт, все, что я получаю, является синими точками - с потерянной прозрачностью. Я видел, что должен добавить их:

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 в "истинный цвет", отображают и сохраняют прозрачность. Это, действительно кажется, делает так, но теперь все, что я вижу, сине на черном фоне.

Что я делаю?!

5
задан Andy Moore 28 July 2010 в 18:09
поделиться