Foros del Web » Programando para Internet » PHP »

Adaptar marca de agua en este codigo

Estas en el tema de Adaptar marca de agua en este codigo en el foro de PHP en Foros del Web. Hola: Utilizo un excelente codigo de miniaturas de este foro. Para mostar mis imagenes, llamo el codigo y listo, funciona perfecto. Por seguridad, me piden ...
  #1 (permalink)  
Antiguo 03/09/2005, 18:09
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Adaptar marca de agua en este codigo

Hola:

Utilizo un excelente codigo de miniaturas de este foro.

Para mostar mis imagenes, llamo el codigo y listo, funciona perfecto.

Por seguridad, me piden watermark en las fotos.

como le incluyo un codigo de marca de agua al codigo que uso para manejo de imagen?????

Este es el codigo que uso:
Código PHP:
<?php  

if(isset($_GET['id'])) { 

    
$conexion=mysql_connect("localhost","xxxxxx","xxxxxx") or die ("no se ha podido conectar a la BD"); 
    
mysql_select_db("xxxxxx") or die ("no se ha podido seleccionar la BD"); 
    
$sql "SELECT archivo_binario,archivo_tipo,archivo_nombre FROM fotos WHERE id='".$_GET['id']."'"
    
$consulta mysql_query($sql,$conexion); 
    
$imagen mysql_result($consulta,0,"archivo_binario");
    
$type mysql_result($consulta,0,"archivo_tipo"); 

    
// Envio cabeceras al navegador 
    
Header ("Content-type: $type"); 

    
// Generar el thumbnail: 

    // Se crea la imagen desde el campo binario de la BD 
    
$img imagecreatefromstring($imagen); 

    
// Tamaño del Thumbnail 
    
$picsize 450
     
    
// Se obtienen los datos del ancho y alto de la imagen. 
    
$new_w imagesx($img); 
    
$new_h imagesy($img); 

    
// Se calcula la relación alto/ancho 
    
$aspect_ratio $new_h $new_w
     
    
// Se ajusta al nuevo tamaño 
    
$new_w $picsize
    
$new_h abs($new_w $aspect_ratio); 

    
// Se crea la mascara de la imagen nueva 
    
$dst_img ImageCreateTrueColor($new_w,$new_h); 

    
// Se copia y reajusta el nuevo tamaño en la nueva imagen. 
     
imagecopyresampled($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img)); 

    
// Se entrega al buffer de salida (navegador en este caso) la imagen en formato JPEG 
    // El tercer parámetro (100) indica la calidad de la imagen: en porcentaje relación calidad/peso imagen. 
    
imagejpeg($dst_img,'',100); 


?>
  #2 (permalink)  
Antiguo 03/09/2005, 18:14
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
lo olvidaba...

el anterior es el codigo que me crea la miniatura (ni tan miniatura)

este que sigue es el que lleva la pagina en la que se ve la imagen creada por el codigo anterior
Código PHP:
<?
if(isset($_GET['id'])) {
 
$conexion mysql_connect("localhost","xxxxx","xxxxxx") or die("No se pudo realizar la conexion con el servidor."); 
mysql_select_db("xxxxx",$conexion) or die("No se puede seleccionar BD");
   
$sql="SELECT * FROM xxxxxx WHERE id='".$_GET['id']."'"
$result=mysql_query($sql,$conexion);

while(
$row=mysql_fetch_array($result)) 

echo 
"<div align='center'>";
echo 
"<img src=\"detalle_fotos.php?id=$row[id]\">";

}
}
?>
  #3 (permalink)  
Antiguo 03/09/2005, 21:18
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 6 meses
Puntos: 2
aqui tienes una classe que lo hace todo

http://www.phpclasses.org/browse/package/2086.html

existen mas... busca por watermark
__________________
3w.valenciadjs.com
3w.laislatv.com
  #4 (permalink)  
Antiguo 03/09/2005, 21:35
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Oye, muchas gracias...

pero como explicaba, quisiera algo que se adapte al codigo que ya tengo, pues me funciona de maravilla la creación de thumbnails.

Esta clase es para usarla en lugar de mi codigo y esta algo complicada para mi

te agradezco tu esfuerzo por ayudar de todos modos
  #5 (permalink)  
Antiguo 04/09/2005, 18:39
okram
Invitado
 
Mensajes: n/a
Puntos:
Hola

Tengo un script para marcar imagenes.... pero...

detalle_fotos.php -> Postea el código que lleva esa página... supongo q es un tanto diferente al codigo que te genera el thumbnail....

Sería mejor si cada vez q posteas codigos pongas los nombres de las paginas a las que el codigo corresponde

Salu2
  #6 (permalink)  
Antiguo 04/09/2005, 19:53
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
gracias...

el codigo de arriba es detalle_fotos.php (esel que me genera el thumbnail)

el codigo pequeño de abajo es el de la página que muestra ese thumbnail

Imagino que el codigo de marca de agua debera adaptarse a el de mis thumbnails (detalle_foto.php)
  #7 (permalink)  
Antiguo 04/09/2005, 22:29
okram
Invitado
 
Mensajes: n/a
Puntos:
Mensaje

Hola

Me parece que tu codigo debe funcionar asi:

Código PHP:
<?php  

if(isset($_GET['id'])) { 

    
$conexion=mysql_connect("localhost","xxxxxx","xxxxxx") or die ("no se ha podido conectar a la BD"); 
    
mysql_select_db("xxxxxx") or die ("no se ha podido seleccionar la BD"); 
    
$sql "SELECT archivo_binario,archivo_tipo,archivo_nombre FROM fotos WHERE id='".$_GET['id']."'"
    
$consulta mysql_query($sql,$conexion); 
    
$imagen mysql_result($consulta,0,"archivo_binario");
    
$type mysql_result($consulta,0,"archivo_tipo"); 

    
// Defines la ruta de la imagen que quieres poner como marca de agua
    
$watermark "water.png"// Debe ser en formato png preferentemente

    
$im imagecreatefrompng($watermark);

    
// Envio cabeceras al navegador 
    
Header ("Content-type: $type"); 

    
// Generar el thumbnail: 

    // Se crea la imagen desde el campo binario de la BD 
    
$img imagecreatefromstring($imagen); 

    
// Tamaño del Thumbnail 
    
$picsize 450
     
    
// Se obtienen los datos del ancho y alto de la imagen. 
    
$new_w imagesx($img); 
    
$new_h imagesy($img); 

    
// Se calcula la relación alto/ancho 
    
$aspect_ratio $new_h $new_w
     
    
// Se ajusta al nuevo tamaño 
    
$new_w $picsize
    
$new_h abs($new_w $aspect_ratio); 

    
// Se crea la mascara de la imagen nueva 
    
$dst_img ImageCreateTrueColor($new_w,$new_h); 

    
// Se copia y reajusta el nuevo tamaño en la nueva imagen. 
     
imagecopyresampled($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img)); 

    
// Se aplica la marca de agua a la imagen
    
imagecopy($dst_img$im0000imagesx($im), imagesy($im));

    
// Se entrega al buffer de salida (navegador en este caso) la imagen en formato JPEG 
    // El tercer parámetro (100) indica la calidad de la imagen: en porcentaje relación calidad/peso imagen. 
    
imagejpeg($dst_img,'',100); 


?>
Asi debe funcionar... Salu2
  #8 (permalink)  
Antiguo 05/09/2005, 08:37
Avatar de thunder-ion  
Fecha de Ingreso: diciembre-2004
Mensajes: 106
Antigüedad: 13 años
Puntos: 0
Código PHP:
function marca_de_agua($imagen,$ancho,$alto){
        
$img_ma_info=getimagesize(MARCA_DE_AGUA);
        
$posicionx=($ancho-$img_ma_info[0]-5);
        
$posiciony=($alto-$img_ma_info[1]-5);
        
$marca_de_agua=imagecreatefrompng(MARCA_DE_AGUA);
        
imagestring($imagen,8,3,5,DOMINIO.' - '.NOMBRE,imagecolorallocate($imagen,255,0,0));
        
imagecopy($imagen,$marca_de_agua,$posicionx,$posiciony,0,0,$img_ma_info[0],$img_ma_info[1]);
    } 
Yo utilizo esto, donde MARCA_DE_AGUA es un archivo PNG con transparencias.

Espero que te sirva.
  #9 (permalink)  
Antiguo 05/09/2005, 18:43
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Gracias... voy a probar
  #10 (permalink)  
Antiguo 05/09/2005, 19:23
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
PERFECTO Okram...

Tal cual me lo expones me funciona. Lo que no logro es centrar en la foto la marca de agua.

Coloque valores en los primeros 2 ceros de:

// Se aplica la marca de agua a la imagen
imagecopy($dst_img, $im, 0, 0, 0, 0, imagesx($im), imagesy($im));

En el primero facil porque la imagen tiene el ancho fijo de 450 pix y poniendo:

// Se aplica la marca de agua a la imagen
imagecopy($dst_img, $im, 25, 0, 0, 0, imagesx($im), imagesy($im));

Me sale centrado a lo ancho pero, como la foto varia su alto, cualquier cosa que coloque en el segundo cero va a ser diferente en cada foto. No me lo da al centro.

Intente algo como esto:

// Se aplica la marca de agua a la imagen
imagecopy($dst_img, $im, imagesx($img)-25, imagesx($img)-50, 0, 0, imagesx($im), imagesy($im));

Haciendo referencia al tamaño de la fot, pero entonces no me muestra la marca de agua
  #11 (permalink)  
Antiguo 05/09/2005, 19:34
okram
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo

hola

jjajaja pense q lo querias en una esquina, asi q te hice un arreglo.... el codigo original q tengo te coloca una marca de agua centrada...

En vez de esta linea:
Código PHP:
imagecopy($dst_img$im0000imagesx($im), imagesy($im)); 
coloca esta:
Código PHP:
imagecopy($dst_img$im, (imagesx($dst_img)/2)-(imagesx($im)/2), (imagesy($dst_img)/2)-(imagesy($im)/2), 00imagesx($im), imagesy($im)); 
si asi debe funcionar

salu2

Última edición por okram; 05/09/2005 a las 19:39 Razón: Sorry me equivoque en el codigo, eso me esta padando mucho ultimamente.....
  #12 (permalink)  
Antiguo 05/09/2005, 19:56
 
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 278
Antigüedad: 15 años
Puntos: 0
Funciona de maravila Okram... Muchas gracias por colaborar amigo
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 20:17.