Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/12/2007, 18:06
Sanubrio
 
Fecha de Ingreso: septiembre-2007
Mensajes: 220
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: watermark que funcione bien

Código PHP:
function obtenerImagenResource($file)
{
  if (!
is_string($file))
  {
      return 
false;
  }  
  
    
$data getimagesize($file);
    if (
$data === false)
    {
        return 
false;
    }
    
    switch (
$data['mime'])
    {
      case 
'image/jpeg':
      case 
'image/pjpeg':
        return 
imagecreatefromjpeg($file);
        break;
        
      case 
'image/png':
        return 
imagecreatefrompng($file);
        
      case 
'image/gif':
        return 
imagecreatefromgif($file);
        
    }
    
    return 
false;
}

function 
obtenerPosiciones($x$y, &$imagen, &$marca)
{
    
$imagen_ancho imagesx($imagen);
    
$imagen_alto imagesy($imagen);
    
    
$marca_ancho imagesx($marca);
    
$marca_alto imagesy($marca);
    
    
$z 40;
    
$anchox round((($imagen_ancho $marca_ancho) / $z) * $marca_ancho);
    
$altox round((($imagen_alto $marca_alto) / $z) * $marca_ancho);
    
    switch (
$x)
    {
      case 
'left':
        
$x $anchox;
        break;
        
      case 
'center':
        
$x round(($imagen_ancho 2) - ($marca_ancho 2));
        break;
        
      case 
'right':
        
$x $imagen_ancho $marca_ancho $anchox;
        break;
        
      default:
        if (!
is_numeric($x) || $x > ($imagen_ancho $marca_ancho))
        {
            
$x 0;
        }
    }
    
    switch (
$y)
    {
        case 
'top':
          
$y $altox;
          break;
          
        case 
'middle':
          
$y =  round(($imagen_alto 2) - ($marca_alto 2));
          break;
          
        case 
'bottom':
          
$y $imagen_alto $marca_alto $altox;
          break;
          
        default:
          if (!
is_numeric($y) || $y > ($imagen_alto $marca_alto))
          {
              
$y 0;
          }
    }
    
    return array(
$x$y);
}

function 
obtenerImagen($imagen$marca$x 0$y 0)
{
    
$imagen obtenerImagenResource($imagen);
    if (
$imagen === false)
    {
        return 
false;
    }
    
$marca obtenerImagenResource($marca);
    if (
$marca === false)
    {
      if (
$imagen !== false)
      {
          
imagedestroy($imagen);
      }
        return 
false;
    }
    
    list(
$x$y) = obtenerPosiciones($x$y$imagen$marca);
    
    
imagecopy($imagen$marca$x$y00imagesx($marca), imagesy($marca));
    
    
ob_start();
    if (
imagejpeg($imagen))
    {
        
$return ob_get_contents();
    }
    
ob_end_clean();
    
    
imagedestroy($imagen);
    
imagedestroy($marca);
    
    return 
$return;
}

$imagen 'http://www.google.es/intl/en_com/images/logo_plain.png';
$marca 'http://www.kibit.cl/blog/wp-content/uploads/icons/google_earth_logo.png';

header("Content-Type: image/jpeg");
echo 
obtenerImagen($imagen$marca'center''middle');