Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/01/2012, 21:42
Avatar de Nemutagk
Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: despues de subir foto, ponerle marca de agua ¿Cómo?

Ah simple vista te falta indicarle a GD que no mescle el canal alfa y a la vez que guarde la info completa del canal alfa....

Código PHP:
Ver original
  1. <?php  
  2. // obtener paámetro
  3. $foto = isset($_GET['foto']) ? trim(addslashes($_GET['foto'])) : '';
  4.  
  5. // prever un par de posibles errores
  6. if (!$foto) die('indica ruta de acceso a imagen...');
  7. if (!file_exists($foto)) die('No se encuentra el achivo: '.$foto);
  8.  
  9. // enviar encabezado
  10. header('content-type: image/jpeg');
  11.  
  12. // crear instancia de la marca de agua y almacenar en variable
  13. $marcadeagua = imagecreatefrompng('mimarcadeagua.png');
  14.  
  15. //desactivamos la mezcla
  16. imagealphablending($marcadeagua,false);
  17.  
  18. //eh indicamos a GD que guarde la info de alfa
  19. imagesevealpha($marcadeagua,true);
  20.  
  21. // obtener información de ancho y altura de la marca de agua
  22. $marcadeagua_ancho = imagesx($marcadeagua);
  23. $marcadeagua_altura = imagesy($marcadeagua);
  24.  
  25. // crear instancia de la foto y almacenar en variable
  26. $mifoto = imagecreatefromjpeg($foto);
  27.  
  28. // obtener información de tamaño de la foto y calcular coordenadas de posicionamiento
  29. $dimensiones = getimagesize($foto);
  30. $destino_x = $dimensiones[0] - $marcadeagua_ancho - 5;
  31. $destino_y = $dimensiones[1] - $marcadeagua_altura - 5;
  32.  
  33. // combinar marca de agua con foto
  34. imagecopymerge($mifoto, $marcadeagua, $destino_x, $destino_y, 0, 0, $marcadeagua_ancho, $marcadeagua_altura, 60);
  35.  
  36. // enviar imagen creada al browser
  37.  
  38. //aquí puedes indicar la calidad de la imagen, recuerda que entre menos compresión
  39. //mas pesará la imagen
  40. imagejpeg($mifoto, null, 75); //donde 75 será la calidad de la imagen generada
  41.  
  42. // destruir los objetos creados y liberar la memoria consumida
  43. imagedestroy($mifoto);
  44. imagedestroy($marcadeagua);

Ahora, a menos que las imagenes sean pequeñas o que no son muchas las imagenes a tratar o en su defecto que sean pocas veces las que vas a editarlas es mejor guardar la imagen editada en un fichero fisico para evitar estar haciendo trabajar de mas al servidor...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)