Foros del Web » Programando para Internet » PHP »

Marca de agua para fotos

Estas en el tema de Marca de agua para fotos en el foro de PHP en Foros del Web. Hola Aca estoy nuevamente pidiendo un poco de ayuda para ir avanzando en mi proyecto. He buscado en San" google" algun codigo para insertar una ...
  #1 (permalink)  
Antiguo 29/05/2010, 09:08
 
Fecha de Ingreso: julio-2009
Mensajes: 311
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta Marca de agua para fotos

Hola Aca estoy nuevamente pidiendo un poco de ayuda para ir avanzando en mi proyecto.
He buscado en San" google" algun codigo para insertar una marca de agua a las fotos que se suban al sitio
Encontre este que tiene buenos comentarios.
Pero como mis conociemietos son escasos tengo un par de dudas que me impiden seguir adelante
Este es el codigo
Código PHP:
<?php 

$image 
$_GET['i']; 
$watermark "water.png"

$im imagecreatefrompng($watermark); 

$ext substr($image, -3); 


if(
strtolower($ext) == "gif") { 
if (!
$im2 imagecreatefromgif($image)) { 
echo 
"Error opening $image!"; exit; 

} else if(
strtolower($ext) == "jpg") { 
if (!
$im2 imagecreatefromjpeg($image)) { 
echo 
"Error opening $image!"; exit; 

} else if(
strtolower($ext) == "png") { 
if (!
$im2 imagecreatefrompng($image)) { 
echo 
"Error opening $image!"; exit; 

} else { 
die; 


imagecopy($im2$im, (imagesx($im2)/2)-(imagesx($im)/2), (imagesy($im2)/2)-(imagesy($im)/2), 00imagesx($im), imagesy($im)); 

if(
$_GET[repeat]) { 
$waterless imagesx($im2) - imagesx($im); 
$rest ceil($waterless/imagesx($im)/2); 

for(
$n=1$n<=$rest$n++) { 
imagecopy($im2$im, ((imagesx($im2)/2)-(imagesx($im)/2))-(imagesx($im)*$n), (imagesy($im2)/2)-(imagesy($im)/2), 00imagesx($im), imagesy($im)); 
imagecopy($im2$im, ((imagesx($im2)/2)-(imagesx($im)/2))+(imagesx($im)*$n), (imagesy($im2)/2)-(imagesy($im)/2), 00imagesx($im), imagesy($im)); 



header("Content-Type: image/jpeg"); 
imagejpeg($im2); 
imagedestroy($im); 
imagedestroy($im2); 

?>
MIs dudas son las siguientes
Yo recibo la foto por metodo POST
o sea que cambiaré :
$image = $_GET['i']; por $image = $_POST['i'];
y
if($_GET[repeat]) { por if($_POST[repeat]) {

Te pregunto: si voy por el camino correcto en esto?
Tengo que agregar las librerias GD al servidor y si es asi de donde las consigo?
En el hosting que tengo tienen:

PHP version 5.2.*
MySQL ver. 5.0.81-community
Desde ya muchas gracias por permitirme seguir adelante y por cada uno de los aportes que he venido recibiendo desde que me inscribi aqui
  #2 (permalink)  
Antiguo 29/05/2010, 11:05
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Marca de agua para fotos

cuando se trata de archivos no entran en el arreglo $_POST, los archivos tienen su propio array $_FILES. Ejemplo:

en el formulario:
Código HTML:
Ver original
  1. <input type="file" name="imagen" value="" />

en PHP:
Código PHP:
Ver original
  1. echo $_FILES['imagen']['type'];//el MIME type del archivo.
  2. echo $_FILES['imagen']['name'];//el nombre de archivo.
  3. echo $_FILES['imagen']['size'];//el tamaño (bytes) del archivo.
  4. echo $_FILES['imagen']['tmp_name'];//ubicación física en el servidor donde está -temporalmente- el archivo.

Qué tipo de marca de agua quieres poner en la foto?... centrada, mosaico, en alguna esquina?
  #3 (permalink)  
Antiguo 29/05/2010, 11:21
 
Fecha de Ingreso: julio-2009
Mensajes: 311
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Marca de agua para fotos

En la esquina inferior derecha un logo.png transparente que hice.
Yo no tengo problema con la subida de la imagen ni con guardarla en el sevidor
Eso ya lo tengo resuelto
En $image = $_POST['i']; vendria la ruta a la imagen en el servidor.
Espero me comprendas lo quie necesito
  #4 (permalink)  
Antiguo 29/05/2010, 11:42
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Marca de agua para fotos

Lo hice a mero tanteo, me dices si no te funciona:


Código PHP:
Ver original
  1. $image = $_GET['i'];
  2. $watermark = "water.png";
  3.  
  4. $im = imagecreatefrompng($watermark);
  5.  
  6. $ext = substr($image, -3);
  7.  
  8.  
  9. if(strtolower($ext) == "gif") {
  10. if (!$im2 = imagecreatefromgif($image)) {
  11. echo "Error opening $image!"; exit;
  12. }
  13. } else if(strtolower($ext) == "jpg") {
  14. if (!$im2 = imagecreatefromjpeg($image)) {
  15. echo "Error opening $image!"; exit;
  16. }
  17. } else if(strtolower($ext) == "png") {
  18. if (!$im2 = imagecreatefrompng($image)) {
  19. echo "Error opening $image!"; exit;
  20. }
  21. } else {
  22. die;
  23. }
  24.  
  25.     $x=imagesx($im2);
  26.     $y=imagesy($im2);
  27.     $wat=imagecreatetruecolor($x,$y);
  28.     imagecopy($wat,$im2,0,0,0,0,$x,$y);
  29.  
  30.     $wx=imagesx($im);
  31.     $wy=imagesy($im);
  32.     imageCopyMerge($wat,$im,($x-$wx),($y-$wy),0,0,$wx,$wy,100);
  33.  
  34. header('Content-Type: image/jpeg');
  35. imagejpeg($wat);

NOTA: Personalmente te sugiero que uses otro motor gráfico Imagemagick, aunque tu servidor debe soportarlo, las librerías GD son muy básicas y no trabajan bien con los canales alpha (transparencias) del PNG.
  #5 (permalink)  
Antiguo 29/05/2010, 16:41
 
Fecha de Ingreso: julio-2009
Mensajes: 311
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Marca de agua para fotos

Gracias por la buena onda pero no quedan resueltas mis dudas con tu respuesta
  #6 (permalink)  
Antiguo 29/05/2010, 17:06
rpv
 
Fecha de Ingreso: febrero-2010
Mensajes: 275
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Marca de agua para fotos

Cita:
MIs dudas son las siguientes
Yo recibo la foto por metodo POST
o sea que cambiaré :
$image = $_GET['i']; por $image = $_POST['i'];
y
if($_GET[repeat]) { por if($_POST[repeat]) {

Te pregunto: si voy por el camino correcto en esto?
Tengo que agregar las librerias GD al servidor y si es asi de donde las consigo?
En el hosting que tengo tienen:
Lo que pasa es que no entendí bien lo que necesitabas, sobre todo por que en una parte de tu mensaje dices que recibes la imagen vía post y en otro dices que recibes la ruta de la imagen vía post, cosas totalmente distintas.

Otra parte que no especificas es que si lo que quieres hacer es agregar watermark en modo batch (por lotes, agregarlo a más de una foto por ocasión), vi que tienes un ciclo (for) en tu código, pero supuse que era un simple error, al igual que lo del $_GET[repeat].
  #7 (permalink)  
Antiguo 29/05/2010, 18:47
 
Fecha de Ingreso: julio-2009
Mensajes: 311
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Marca de agua para fotos

Cita:
Iniciado por rpv Ver Mensaje
Lo que pasa es que no entendí bien lo que necesitabas, sobre todo por que en una parte de tu mensaje dices que recibes la imagen vía post y en otro dices que recibes la ruta de la imagen vía post, cosas totalmente distintas.

Otra parte que no especificas es que si lo que quieres hacer es agregar watermark en modo batch (por lotes, agregarlo a más de una foto por ocasión), vi que tienes un ciclo (for) en tu código, pero supuse que era un simple error, al igual que lo del $_GET[repeat].

El codigo que pegue originalmente al comienzo lo encontre en la red no es mio
Estoy tratando de personalizarlo para poder incluirlo en mi web para ponerle una marca de agua a las fotos que subin
Es en ese codigo que al comienzao usan el metodo GET indudablemente en el trae la direccion en que se encuentra la imagen en el servidor
Por eso venia mi pregunta pues en el formulario que uso yo para manipular eso uso el metodo Post
Con respescto al GET[repeat] tambien figura en el código cerca del final y no se como cambiarlo.


Si alquien me quiere ayudar con algun otro código que pueda lograr el mismo fin , se los voy a agradecer muchisimo.
Simplemente quiero agregar un logo las fotos

Gracias

Etiquetas: agua, fotos, marca
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 02:07.