Ver Mensaje Individual
  #4 (permalink)  
Antiguo 13/08/2011, 09:11
Avatar de Patriarka
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