Próbuję zrobić automatyczne nakładanie znaku wodnego na obrazek. Znalazłem kilka rozwiązań, ale żadne nie zadziałało do końca poprawnie. Znak wodny jest w formacie png o rozmiarach 400x400. O ile na jpg nakłada się doskonale, tak na png już nie bardzo. Wygląda to tak jak by się "wysypywały" cienie.
$znak = System_Path::get('productGfx')."/watermark/znak.png"; $path = System_Path::get('productGfx')."/".$hash.".jpg"; switch($info_img[2]){ case 1: $image = imagecreatefromgif($path); break; case 2: $image = imagecreatefromjpeg($path); break; case 3: $image = imagecreatefrompng($path); break; } $watermark = imagecreatefrompng($znak); $x = imagesx($image); $y = imagesy($image); $new_mark = imagecreatetruecolor($x,$y); imagealphablending($new_mark, false); imagesavealpha($new_mark, true); imagecopyresampled($new_mark, $watermark, 0, 0, 0, 0, $x, $y, 400, 400); imagealphablending($new_mark, false); imagesavealpha($new_mark, true); imagecopy($image,$new_mark,0,0,0,0,$x,$y); imagepng($image, System_Path::get('productGfx')."/".$hash.".png",9); rename(System_Path::get('productGfx')."/".$hash.".png", System_Path::get('productGfx')."/".$hash.".jpg"); imagedestroy( $image ); imagedestroy( $watermark ); imagedestroy( $new_mark );
Przykładowy przerobiony obrazek png:

Będę wdzięczny za pomoc:)
Pozdrawiam!
Piotrek