PHP + GD: imagecopymerge PNG asetat istinat değil

0 Cevap php

Ben iki PNG dosyalarını, "red.png" ve "blue.png" var; Her ikisi de çok saydam, ama çeşitli yerlerde, kırmızı veya mavi lekeler bir kaç piksel var.

Ben ikisini birleştiren bir PHP komut dosyası yapmak istiyorum; Bu gibi bir şey gibi basit olmalıdır:

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

Ben bu komut dosyasını çalıştırdığınızda, ben olsun tüm mavi noktalar olduğunu - şeffaflık kaybettik. Ben bu eklemeniz gerektiğini gördüm:

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

Ve (orijinal ve bindirme? Hem) herhangi bir yardım için görünmüyor.

Ben ayarlamak için PHP.net, bir şey üzerinde birkaç geçici çözümler gördüm:

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

Hangi bir "gerçek renk" imajına PNG dönüştürmek ve şeffaflığı korumak gerekir. Bunu yapmak gibi görünüyor, ama şimdi görüyorum tüm siyah zemin üzerine mavi.

Ben ne yapmalıyım?

0 Cevap