Witam!
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