Ayuda me estoy volviendo loco

Fer_volador
12 de Noviembre del 2007
Hola a todos, necesito un codigo para poner marcas de agua en imagenes que estan en mi servidor. He encontrado un codigo y me funciona a medias, es increible.
Veamos el codigo:

<?php
$imagen = "imagenesfondos/principal.jpg"; //nombre de la imagen.
$marca = "imagenesfondos/watermark.png"; //nombre de la marca de agua
$im = imagecreatefrompng($marca);
$ext = substr($imagen, -3); //busca extensión

if(strtolower($ext) == "gif") {
if (!$im2 = imagecreatefromgif($imagen)) {
echo "Hubo un error al abrir la imagen $imagen"; exit;
}
}else if(strtolower($ext) == "jpg") {
if (!$im2 = imagecreatefromjpeg($imagen)) {
echo "Hubo un error al abrir la imagen $imagen"; exit;
}
} else if(strtolower($ext) == "png") {
if (!$im2 = imagecreatefrompng($imagen)) {
echo "Hubo un error al abrir la imagen $imagen"; exit;
}
} else {
die;
} imagecopy($im2, $im, (imagesx($im2)/1)-(imagesx($im)/1), (imagesy($im2)/1)-(imagesy($im)/1), 0, 0, imagesx($im), imagesy($im));

//genera la imagen con la marca de agua

header("Content-Type: image/jpeg");
imagejpeg($im2); //muestra la imagen final
imagedestroy($im);
imagedestroy($im2);
?>

Si lo pongo así exactamente me funciona, ahora viene lo bueno, si lo pongo dentro de una capa ya no me funciona, no se ve la imagen. Si pongo cualquier otra cosa html, tampoco funciona se ven signos raros, si dejo una linea de espacio en dreamweaver antes de poner <?php tampoco funciona. Por favor ayudarme que me estoy volviendo loco.

Muchas gracias