Ver Mensaje Individual
  #4 (permalink)  
Antiguo 09/02/2009, 06:47
raulbotella83
 
Fecha de Ingreso: febrero-2009
Mensajes: 45
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Problemas con redimensionamiento de imagenes

ok,

Me he estado documentando y veo una serie de funciones para crear thumbails de las imagenes.

Lo he probado y funciona correctamente, la pregunta es:

Al crear la copia de la misma imagen pero mas reducida, pierde menos resolucion que si le cambiara el tamaño en el html no? A simple vista he probado y parece que se ve peor esta si cambio el tamaño en el html que si hago la copia...

dejo el codigo por si le interesan:

Código PHP:
function abrir_Imagen($imagen) {
    if (@
$info_imagen getimagesize($imagen)) {
        switch (
$info_imagen['mime']) {
        case 
"image/jpeg":
            if (!@
$imagen_fuente imagecreatefromjpeg($imagen)) {
                return 
0;
            }
            break;
        case 
"image/gif":
            if (!@
$imagen_fuente imagecreatefromgif($imagen)) {
                return 
0;
            }
            break;
        case 
"image/png":
            if (!@
$imagen_fuente imagecreatefrompng($imagen)) {
                return 
0;
            }
            break;
        }
    } else {
        return 
0;
    }
    return 
$imagen_fuente;
}
 
function 
crear_Thumbnail($imagen$ancho_max 200$alto_max 200$calidad 80$destino ""$marca ""$posicion_marca 0$margen 4) {
 
    if (
$destino == "") {
        
header('Content-type: image/jpeg');
    }
 
    
//    OBTENGO LOS DATOS ORIGINALES DE LA IMAGEN Y CHEQUEO QUE SEA UNA IMAGEN VALIDA
    
if (@$datos_img getimagesize($imagen)) {
        
$ancho $datos_img[0];
        
$alto $datos_img[1];
        
        
        
$ancho_orig $ancho;
        
$alto_orig $alto;
        
        
//    CALCULO ANCHO Y ALTO PROPORCIONALES
        
if ($ancho $ancho_max) {
            
$proporcion round(($ancho_max 100) / $ancho);
            
$ancho $ancho_max;
            
$alto round(($alto $proporcion) / 100);
        }
        if (
$alto $alto_max) {
            
$proporcion round(($alto_max 100) / $alto);
            
$alto $alto_max;
            
$ancho round(($ancho $proporcion) / 100);
        }
        
        
//    CREO LA NUEVA IMAGEN
        
$imagen_nueva imagecreatetruecolor($ancho$alto);
        
        
//    ABRO LA IMAGEN FUENTE
        
if (!$imagen_fuente abrir_Imagen($imagen)) {
            return 
0;
            exit;
        }
        
        
//    COPIO LA IMAGEN FUENTE EN LA NUEVA
        
imagecopyresampled($imagen_nueva$imagen_fuente0000$ancho$alto$ancho_orig$alto_orig);
        
        
//    CHEQUEO SI HAY QUE AGREGAR UNA MARCA
        
if (($marca != "") && ($imagen_marca abrir_Imagen($marca))) {
            list(
$ancho_marca$alto_marca) = getimagesize($marca);
            
$pos_x $margen;
            
$pos_y $margen;
            switch (
$posicion_marca) {
            case 
1:
                
$pos_x = ($ancho $ancho_marca) - $margen;
                break;
            case 
2:
                
$pos_y = ($alto $alto_marca) - $margen;
                break;
            case 
3:
                
$pos_x = ($ancho $ancho_marca) - $margen;
                
$pos_y = ($alto $alto_marca) - $margen;
                break;
            }
            
imagecopy($imagen_nueva$imagen_marca$pos_x$pos_y00$ancho_marca$alto_marca);
        }
        
        
imagejpeg($imagen_nueva$destino$calidad);
        
        return 
1;
    } else {
        
//    HA OCURRIDO UN ERROR AL OBTENER LOS DATOS DE LA IMAGEN.
        //    PUEDE SER QUE EL ARCHIVO NO EXISTA, O QUE NO SEA UNA
        //    IMAGEN VALIDA.
        
return 0;
    }
}
crear_Thumbnail("zapato.jpg"10010080"zap_1.jpg"); 
Lo dicho, lo puedo hacer así? es que asi evitaria muchos procesos como:

Crear lotes/acciones en photoshop
Subir dos imagenes por modelos...

Pero bueno si es la única manera,....


Un saludo, y gracias por vuestra respuesta.