Foros del Web » Programando para Internet » PHP »

Agregar marca de agua a funcion para subir fotos

Estas en el tema de Agregar marca de agua a funcion para subir fotos en el foro de PHP en Foros del Web. Hola. Tengo el siguiente tema: 1. Dispongo de un sistema para subir imágenes y textos para crear galerías de fotos. El mismo sube las imágenes ...
  #1 (permalink)  
Antiguo 13/08/2011, 02:38
 
Fecha de Ingreso: marzo-2009
Mensajes: 27
Antigüedad: 15 años, 8 meses
Puntos: 0
Agregar marca de agua a funcion para subir fotos

Hola. Tengo el siguiente tema:
1. Dispongo de un sistema para subir imágenes y textos para crear galerías de fotos.
El mismo sube las imágenes a un directorio, guarda thumbnails y me guarda los datos en una DB.

Lo que quiero es agregarle a todo esto un código para que antes de guardar la foto le ponga una watermark.

Esta es la función que utiliza para crear el thumbnail y escalarla:
Código PHP:
function thumbjpeg($imagen,$nombre) { 
     
// Lugar donde se guardarán los thumbnails respecto a la carpeta donde está la imagen "grande". 
     
$dir_thumb "imagenes_ch/"
     
// Prefijo que se añadirá al nombre del thumbnail. Ejemplo: si la imagen grande fuera "imagen1.jpg", 
     // el thumbnail se llamaría "tn_imagen1.jpg" 
     
$prefijo_thumb "tn_"
     
// Aquí tendremos el nombre de la imagen. 
    
$nombre1=basename($imagen); 
     
// Aquí la ruta especificada para buscar la imagen. 
     
$camino dirname($imagen)."/"
     
// Intentamos crear el directorio de thumbnails, si no existiera previamente. 
     
if (!file_exists($camino.$dir_thumb)) 
          @
mkdir ($camino.$dir_thumb0777) or die("No se ha podido crear el directorio ".$camino.$dir_thumb); 
     
// Aquí comprovamos que la imagen que queremos crear no exista previamente 
     
$img = @imagecreatefromjpeg($imagen) or die("No se encuentra la imagen $camino$nombre<br>\n"); 
     
// miramos el tamaño de la imagen original... 
     
$datos getimagesize($camino.$nombre1) or die("Problemas con $camino$nombre1<br>\n"); 
     
// intentamos escalar la imagen original a la medida que nos interesa 
     
$anchura 450;
     
$altura=($anchura*$datos[1])/$datos[0];
     
// esta será la nueva imagen reescalada 
     
$thumb imagecreatetruecolor($anchura,$altura); 
     
//echo $camino.$dir_thumb.$prefijo_thumb.$nombre;
     // con esta función la reescalamos 
     
imagecopyresampled ($thumb$img0000$anchura$altura$datos[0], $datos[1]); 
     
// voilà la salvamos con el nombre y en el lugar que nos interesa. 
     
imagejpeg($thumb,$dir_thumb.$nombre); 
     } 
Le podré agregar algo como esto:
Código PHP:
$ruta_marca 'marca_de_agua.png';
$watermark imagecreatefrompng($ruta_marca);

$ruta_imagen 'Tulipanes.jpg';
$imagen imagecreatefromjpeg($ruta_imagen);

$tamanyo_imagen getimagesize($ruta_imagen);
$tamanyo_marca getimagesize($ruta_marca);

$dest_x $tamanyo_imagen[0] - $tamanyo_marca[0] - 10;
$dest_y $tamanyo_imagen[1] - $tamanyo_marca[1] - 10;
imagecopymerge($imagen$watermark$dest_x$dest_y00,$tamanyo_marca[0], $tamanyo_marca[1], 100);

imagejpeg($imagen);
imagedestroy($imagen);
imagedestroy($watermark); 
No soy programador.. gracias de antemano!
:)
  #2 (permalink)  
Antiguo 13/08/2011, 02:44
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Agregar marca de agua a funcion para subir fotos

Verifica si este tema te puede ayudar http://www.forosdelweb.com/f68/aport...agenes-912637/
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 13/08/2011, 02:52
 
Fecha de Ingreso: marzo-2009
Mensajes: 27
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Agregar marca de agua a funcion para subir fotos

Gracias por la rápida respuesta.
Estuve viendo ese tema y parece que se puede hacer de todo, pero el tema es que no sé como aplicarlo.
Creí que podría ser algo simple aplicarle una funcion a la otra antes de subir la imagen.
Voy a ver si sigo buscando.

Gracias
  #4 (permalink)  
Antiguo 13/08/2011, 09:11
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Agregar marca de agua a funcion para subir fotos

aca te mando un ejemplo y adaptalo a tu sistema, lo que hace uno aveces lo hace lo mas general posible para que le sirva a cualquiera pero sos vos el tiene que saber como usar lo que hizo el otro:
include 'water_mark/water_mark.php';


/*
aca le pongo los archivos a mano, vos lo podes personalizar con un formulario
*/
Código PHP:
Ver original
  1. $destino='destino_water_mark/nombre_de_nueva_imagen_con_marca_de_agua.jpg';
  2. $image='original_images/shaka.png';
  3.  
  4. $watermark = "images/Marca_de_agua.png";
  5. $im = imagecreatefrompng($watermark);
  6. $ext = substr($image, -3);
  7.  
  8. if(strtolower($ext) == "gif") {
  9.     if (!$im2 = imagecreatefromgif($image)) {
  10.     echo "Error opening $image!";
  11.     }
  12. } else if(strtolower($ext) == "peg" || strtolower($ext) == "jpg") {
  13.     if (!$im2 = imagecreatefromjpeg($image)) {
  14.     echo "Error opening $image!";
  15.     }
  16. } else if(strtolower($ext) == "png") {
  17.     if (!$im2 = imagecreatefrompng($image)) {
  18.     echo "Error opening $image!";
  19.     }
  20. } else {    echo ' die'; die; }
  21. imagecopy($im2, $im, (imagesx($im2)/2)-(imagesx($im)/2), (imagesy($im2)/2)-(imagesy($im)/2), 0, 0, imagesx($im), imagesy($im));
  22. $batch = array(
  23.             array ( 'filename' => $watermark,
  24.                    'position' => array(0,0),
  25.                  )
  26.             );
  27. $my_water_mark=watermark($image, $batch, $destino , 50); //DEVUELVE EL ARCHIVO CREADO CON LA MARCA DE AGUA
  28. echo '<pre>'; print_r(getimagesize($my_water_mark)); echo '</pre>';
  29. echo '<pre>'; print_r(pathinfo($my_water_mark)); echo '</pre>';
  30.  
  31. $datosFile=pathinfo($my_water_mark);
  32. echo '<pre>'; print_r($datosFile); echo '</pre>';

EL ARCHIVO WATER_MARK.PHP
Código PHP:
Ver original
  1. <?php
  2.  
  3. function watermark($sourcefile, $watermarkfiles, $destination, $quality=90) {
  4.  
  5. /*
  6.  
  7. $sourcefile = Filename of the picture to be watermarked.
  8. $watermarkfile = files to add. Each is: array ( 'filename' => filename , 'position' => position to show(array), 'resample' => new dimension(array) )
  9. You can omit any except filename
  10. $destination = jpg or png file to output (jpg if source is jpg, png if source is png). Send blank to direct output
  11. Sample:
  12.  
  13. $batch = array ( array ( 'filename' => "watermark.png",
  14. 'position' => array(100,0),
  15. ),
  16. array ( 'filename' => "brilho.png",
  17. 'position' => array(200,200),
  18. 'resample' => array(30,30)
  19. )
  20. );
  21. watermark("picture.jpg", $batch, "", 90); <--  will add both images in bath on top of picture, preserving transparency
  22.  
  23. */
  24.  
  25.     $ih = getimagesize($sourcefile);
  26.     $ispng = $ih[2] == 3;
  27.     if ($ispng)
  28.        $sourcefile_id = imagecreatefrompng($sourcefile);
  29.     else
  30.        $sourcefile_id = imagecreatefromjpeg($sourcefile);
  31.  
  32.     $sourcefile_width=imageSX($sourcefile_id);
  33.     $sourcefile_height=imageSY($sourcefile_id);
  34.     foreach ($watermarkfiles as $x => $watermarkfile) {
  35.        $watermarkfile_id = imagecreatefrompng($watermarkfile['filename']);
  36.        imageAlphaBlending($watermarkfile_id, false);
  37.        imageSaveAlpha($watermarkfile_id, true);
  38.        $watermarkfile_width=imageSX($watermarkfile_id);
  39.        $watermarkfile_height=imageSY($watermarkfile_id);
  40.  
  41.     // resample?
  42.        if (isset($watermarkfile['resample'])) {
  43.           $im_dest = imagecreatetruecolor ($watermarkfile['resample'][0], $watermarkfile['resample'][1]);
  44.           imagealphablending($im_dest, false);
  45.           imagecopyresampled($im_dest, $watermarkfile_id, 0, 0, 0, 0, $watermarkfile['resample'][0], $watermarkfile['resample'][1], $watermarkfile_width, $watermarkfile_height);
  46.           imagesavealpha($im_dest, true);
  47.           imagedestroy($watermarkfile_id);
  48.           $watermarkfile_id = $im_dest;
  49.           $watermarkfile_width = $watermarkfile['resample'][0];
  50.           $watermarkfile_height = $watermarkfile['resample'][1];
  51.        }
  52.  
  53.        // position ? if none given, centered
  54.        if (isset($watermarkfile['position'])){
  55.           list($dest_x,$dest_y) = $watermarkfile['position'];
  56.        }else {
  57.           $dest_x = ( $sourcefile_width / 2 ) - ( $watermarkfile_width / 2 ); // centered
  58.           $dest_y = ( $sourcefile_height / 2 ) - ( $watermarkfile_height / 2 ); // centered
  59.        }
  60.  
  61.        imagecopy($sourcefile_id, $watermarkfile_id, $dest_x, $dest_y, 0, 0, $watermarkfile_width, $watermarkfile_height);
  62.        imagedestroy($watermarkfile_id);
  63.     }
  64.     if ($ispng){
  65.        imagepng($sourcefile_id,$destination);
  66.     }else{
  67.        imagejpeg($sourcefile_id,$destination,$quality);
  68.     }
  69.     imagedestroy($sourcefile_id);
  70.     return $destination;
  71. }
  72. ?>
Espero te sirva a vos a cualquiera, pero tenga la aptitud de aprender a usar lo que hizo otro y no espere solciones magicas

Si quieren lo pueden subir a APORTES, ya que es de uso general
  #5 (permalink)  
Antiguo 16/08/2011, 00:17
 
Fecha de Ingreso: marzo-2009
Mensajes: 27
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Agregar marca de agua a funcion para subir fotos

Muchas gracias! Voy a ver si puedo adaptarlo.
No es por desmerecer el trabajo de los demás, ni de vago.
Es que mi manejo de PHP es bastante limitado, y se me dificulta montones trabajar con archivos.

Saludos!
  #6 (permalink)  
Antiguo 16/08/2011, 07:30
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 9 meses
Puntos: 288
Respuesta: Agregar marca de agua a funcion para subir fotos

Hola Lucas, es que con esto te vas a encontrar miles de trabajos hechos por otros y saber leerlos te va ayudar mucho

Etiquetas: agua, fotos, funcion, 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 18:00.