Foros del Web » Programando para Internet » PHP »

Ayuda me estoy volviendo loco

Estas en el tema de Ayuda me estoy volviendo loco en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/11/2007, 10:50
 
Fecha de Ingreso: noviembre-2007
Mensajes: 12
Antigüedad: 12 años, 3 meses
Puntos: 0
Ayuda me estoy volviendo loco

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 (antes o después), 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
  #2 (permalink)  
Antiguo 12/11/2007, 11:27
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 14 años, 11 meses
Puntos: 33
Re: Ayuda me estoy volviendo loco

¿Qué es lo que estas tratando de hacer? ¿A qué te refieres con capa?... Seria bueno que pusieras fragmentos de tus errores para poderte orientar mejor...

Saludillos.
  #3 (permalink)  
Antiguo 12/11/2007, 11:35
 
Fecha de Ingreso: noviembre-2007
Mensajes: 12
Antigüedad: 12 años, 3 meses
Puntos: 0
Re: Ayuda me estoy volviendo loco

El codigo de arriba es un codigo que inserta una marca de agua a una imagen que tengo en el servidor. Tal y como lo veis empezando en la linea 1 con <?php y guardandolo con extension .php funciona perfectamente y se ve la imagen con su marca de agua.
El problema viene si por ejemplo inserto el codigo en una etiqueta <div> o si por ejemplo pongo algo de html, es decir, por ejemplo así ya no funcionaría:

Hola que tal??
<?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);
?>


Solo con poner eso delante y guardando el archivo igualmente con ext .php se vería un batiburrillo de símbolos, o incluso sin poner nada simplemente dejando la linea 1 vacía y poniendo el codigo desde la linea 2 tampoco funciona, en vez de verse la imagen se ve el espacio de la imagen con una "x" como que no puede mostrar la imagen

un saludo
fer
  #4 (permalink)  
Antiguo 12/11/2007, 12:03
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 14 años, 11 meses
Puntos: 33
Re: Ayuda me estoy volviendo loco

Pues la función header() no permite que haya salidas al explorador antes de ella, entendiendose como salida echo ""; y etiquetas <html>.

Saludillos.
  #5 (permalink)  
Antiguo 12/11/2007, 12:23
 
Fecha de Ingreso: noviembre-2007
Mensajes: 12
Antigüedad: 12 años, 3 meses
Puntos: 0
Re: Ayuda me estoy volviendo loco

¿Entonces como puedo hacer para que la imagen ya con la marca de agua me aparezca dentro de una etiqueta div', y así no interfiera con el resto de la pagina, que evidentemente tiene muchísimas mas cosas con html

Un saludo y gracias
  #6 (permalink)  
Antiguo 12/11/2007, 12:27
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.990
Antigüedad: 15 años
Puntos: 80
Re: Ayuda me estoy volviendo loco

Revisa esto:

FAQ's de PHP

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #7 (permalink)  
Antiguo 12/11/2007, 12:28
Avatar de deet  
Fecha de Ingreso: mayo-2005
Ubicación: Córdoba - Argentina
Mensajes: 269
Antigüedad: 14 años, 9 meses
Puntos: 1
Re: Ayuda me estoy volviendo loco

suponiendo que tu script esta en un archivo llamado imagenPrincipal.php deberías llamar al script desde tu tag img

p.e.:

Código PHP:
<img src="imagenPrincipal.php" /> 
  #8 (permalink)  
Antiguo 12/11/2007, 12:29
 
Fecha de Ingreso: noviembre-2007
Mensajes: 12
Antigüedad: 12 años, 3 meses
Puntos: 0
Re: Ayuda me estoy volviendo loco

gracias voy a probar
  #9 (permalink)  
Antiguo 12/11/2007, 14:14
 
Fecha de Ingreso: noviembre-2007
Mensajes: 12
Antigüedad: 12 años, 3 meses
Puntos: 0
Re: Ayuda me estoy volviendo loco

Muchas gracias por vuestras respuestas en especial a deet. Soy nuevo en sto del php y era la primera vez que escribía. Después de todo el día volviendome loco al final funciona a la perfección.

Un saludo y gracias de nuevo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:52.