Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/09/2013, 20:12
Mariuch
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Marca de agua

Acá te "devuelvo" tu código con algunas correcciones. Para escalar la imagen, necesitas usar un poco de GD Library. Acá te explico algunas cosas básicas. Espero que te sirva!

Código PHP:
<?php
    
function watermark_image ($source_file, $source_watermark, $destination_file) {
        list(
$width, $height) = getimagesize($source_file);
        
        
$image = imagecreatefromjpeg($source_file);
        
        
$watermark = imagecreatefrompng( $source_watermark );
        list(
$src_width, $src_height) = getimagesize($source_watermark);

                
// Primero que nada necesitas establecer un ancho y alto máximo permitidos para tu marca de agua. En este caso puse 200px * 200px pero la medida la podés cambiar a tu conveniencia
        
$max_ancho = 200 ;
        
$max_alto = 200 ;

                
// En cuanto a las medidas proporcionales, se obtienen con una serie de fórmulas pre-establecidas que acá adapté para tu código

        
$x_ratio = $max_ancho / $src_width ;
        
$y_ratio = $max_alto / $src_height ;

        if( 
$src_width <= $max_ancho && $src_height <= $max_alto ){
            
$anchoFinal = $src_width ;
            
$altoFinal = $src_height ;
        } else if( 
$src_width > $max_ancho ){
            
$altoFinal = ceil( $x_ratio * $src_height ) ;
            
$anchoFinal = $max_ancho ; 
        } else if( 
$src_height > $max_alto ){
            
$anchoFinal = ceil( $y_ratio * $src_width ) ;
            
$altoFinal = $max_alto ; 
        }

// Como podrás ver, si el ancho y el alto no exceden los tamaños máximos, las medidas originales serán respetadas, y sino se modificarán proporcionalmente
         
        
imagecopyresampled($image, $watermark, 0, 0, 0, 0, $anchoFinal, $altoFinal, $src_width, $src_height);
         
        if (
$destination_file<>'') {
         
            
imagejpeg($image, $destination_file, 100);
         
        } else {
         
            
header('Content-Type: image/jpeg');
            
imagejpeg($image, null, 100);
         
        };
         
        
imagedestroy($image);
        
imagedestroy($watermark);
    }
?>