Witam,
mam problem z generowaniem przeźroczystego watermarka na klatkach gifa z użyciem biblioteki GD. Watermark to plik png z półprzeźroczytym napisem.
Gifa dzielę na klatki za pomocą gotowej klasy gofresizer. Gdy klatki nie zawierają przeźroczystości problemu nie ma - watermarki nakłada się pięknie z kanałem alfa. Jednak gdy klatka posiada przeźroczystość watermark staje się niebieski. Tak to wygląda:
klatka bez przeźroczystości:
klatka z przeźroczystością:

Gdy scalę klatki spowrotem w gifa pojawia się na watermarku mignięcie koloru niebieskiego.
Proszę o pomoc w rozwiązaniu problemu. Załączam kod źródłowy funkcji skalującej i nakłądającej watermarka na klatki
//-------------------------------------------------------
/**
* GD Resizer Device
* Resizes the animation frames
*/
private function resizeframes($watermark = false){
$k=0;
foreach($this->parsedfiles as $img){
$src = imagecreatefromgif($img);
$sw = $this->imagedata[$k]["width"];
$sh = $this->imagedata[$k]["height"];
$nw = round($sw * $this->wr); $nh = round($sh * $this->hr); $sprite = imagecreatetruecolor($nw,$nh);
$trans = imagecolortransparent($sprite);
imagealphablending($sprite, true);
imagepalettecopy($sprite,$src);
imagefill($sprite,0,0,imagecolortransparent($src));
imagecolortransparent($sprite,imagecolortransparent($src));
imagecopyresampled($sprite,$src,0,0,0,0,$nw,$nh,$sw,$sh);
if($watermark){
$overlay_width = imagesx($overlay_gd_image);
$overlay_height = imagesy($overlay_gd_image);
$newWatermarkW = $this->imagedata[0]["width"] * 0.15;
$watermarkProp = $overlay_height / $overlay_width;
$newWatermarkH = $newWatermarkW * $watermarkProp;
imagealphablending($sprite, true);
imagecopyresampled(
$sprite,
$overlay_gd_image,
$this->imagedata[0]["width"] - $newWatermarkW + 1,
$this->imagedata[0]["height"] - $newWatermarkH + 1,
0,
0,
$newWatermarkW,
$newWatermarkH,
$overlay_width,
$overlay_height
);
imagedestroy($overlay_gd_image);
}
imagegif($sprite,$img);
imagedestroy($sprite);
imagedestroy($src);
$k++;
}
}
Ten post edytował Conficker15 12.09.2014, 14:45:26