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"]; $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++; } }