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$watermark0000$anchoFinal$altoFinal$src_width$src_height);
         
        if (
$destination_file<>'') {
         
            
imagejpeg($image$destination_file100);
         
        } else {
         
            
header('Content-Type: image/jpeg');
            
imagejpeg($imagenull100);
         
        };
         
        
imagedestroy($image);
        
imagedestroy($watermark);
    }
?>