asi lo hago yo y lo hace perfecto
Código PHP:
// INICIO PONER watemark
$destino = "images/tuImagen.jpg";
// Esta imagen es el logo que se pondra.
$imagen_logo = imagecreatefrompng(PATH . FOLDER_EMPRESA_GALERIA_USADOS ."logo.png"); // Defino ancho, alto del logo.
$ancho_logo = imagesx($imagen_logo);
$alto_logo = imagesy($imagen_logo);
// Creo la imagen a cual se le pondra el logo.
$imagen_dest = imagecreatefromjpeg($destino);
// Defino ancho, alto de la imagen que se le colocara el logo.
$ancho_dest = imagesx($imagen_dest);
$alto_dest = imagesy($imagen_dest);
// Defino la posicion donde se mostrara el logo dejando
// 10 pixeles de espacio. Se mostrara en la parte
// inferior derecho.
$ancho_muestra = ($ancho_dest - $ancho_logo) - 0;
$alto_muestra = ($alto_dest - $alto_logo) - 0;
//Envio la cabecera para mostrar la imagen.
//header("Content-type: image/jpeg");
// Sobre pongo el logo a la imagen.
imagecopyresized($imagen_dest,$imagen_logo,$ancho_muestra,$alto_muestra,0,0,$ancho_logo,$alto_logo,$ancho_logo,$alto_logo);
// Guardo la imagen que ya tiene el logo.
imagejpeg($imagen_dest,$destino,75);
// Muestro la imagen.
//imagejpeg($imagen_dest,"",75);
// Destruyo las imagenes.
imagedestroy($imagen_dest);
imagedestroy($imagen_logo);
// FIN PONER WATEMARK