Foros del Web » Programando para Internet » PHP »

thumbs

Estas en el tema de thumbs en el foro de PHP en Foros del Web. Hola a todos.. La cuestion es la siguiente: Necesito crear un thumbs de 200 x 149, esa parte es facil... Lo dificil es que necesito ...
  #1 (permalink)  
Antiguo 25/05/2007, 00:54
Avatar de lrunge  
Fecha de Ingreso: agosto-2005
Ubicación: En algun lugar de Caracas
Mensajes: 165
Antigüedad: 18 años, 8 meses
Puntos: 4
thumbs

Hola a todos..

La cuestion es la siguiente:

Necesito crear un thumbs de 200 x 149, esa parte es facil...

Lo dificil es que necesito que cuando se cree, independientemente del tamaño de la imagen original el thumb no se estire ni nada de eso, que siempre sea de 200 x 149 pero si la imagen es vertical u horizontal, este no se estire a se alargue.

ME entienden? bueno, muchas gracias a todo aquel que pueda ayudarme

Salu2
__________________
"La sencillez de una respuesta, sera inversamente proporcional a su explicacion" Luis Runge
  #2 (permalink)  
Antiguo 25/05/2007, 22:05
Avatar de lrunge  
Fecha de Ingreso: agosto-2005
Ubicación: En algun lugar de Caracas
Mensajes: 165
Antigüedad: 18 años, 8 meses
Puntos: 4
Re: thumbs

A ver gente... nadie que me ayude?

una simple pregunta de GD, pero no tengo ni idea de como utilizar esta galeria

Saludos
__________________
"La sencillez de una respuesta, sera inversamente proporcional a su explicacion" Luis Runge
  #3 (permalink)  
Antiguo 26/05/2007, 00:17
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: thumbs

Tampoco estas para que exijas que te ayuden, a no ser que pienses pagar o algo =/

Lo que necesitas no es tanto el uso de GD, ya que eso es lo facil.. mas bien necesitas saber que calculos hacer para que mantenga esa proporcion.

Este es un script que uso para hacer miniaturas de imagenes en una carpeta de mi pc, puedes probarlo y basarte.. aunq creo que la funcion thumb hace lo que pides.

Código PHP:
<?php
function thumb($img$w$h$fill true$save false) {
    if (!
extension_loaded('gd') && !extension_loaded('gd2')) {
        
trigger_error("No dispones de la libreria GD para generar la imagen."E_USER_WARNING);
        return 
false;
    }

    
$imgInfo getimagesize($img);
    switch (
$imgInfo[2]) {
        case 
1$im imagecreatefromgif($img); break;
        case 
2$im imagecreatefromjpeg($img);  break;
        case 
3$im imagecreatefrompng($img); break;
        default:  
trigger_error('Tipo de imagen no reconocido.'E_USER_WARNING);  break;
    }

    if (
$imgInfo[0] <= $w && $imgInfo[1] <= $h && !$fill) {
        
$nHeight $imgInfo[1];
        
$nWidth $imgInfo[0];
    }else{
        if (
$w/$imgInfo[0] < $h/$imgInfo[1]) {
            
$nWidth $w;
            
$nHeight $imgInfo[1]*($w/$imgInfo[0]);
        }else{
            
$nWidth $imgInfo[0]*($h/$imgInfo[1]);
            
$nHeight $h;
        }
    }
  
    
$nWidth round($nWidth);
    
$nHeight round($nHeight);

    
$newImg imagecreatetruecolor($nWidth$nHeight);

    
imagecopyresampled($newImg$im0000$nWidth$nHeight$imgInfo[0], $imgInfo[1]);

    if (
$save === false) {
        
header("Content-type: "$imgInfo['mime']);
        
        switch (
$imgInfo[2]) {
            case 
1imagegif($newImg); break;
            case 
2imagejpeg($newImg);  break;
            case 
3imagepng($newImg); break;
            default:  
trigger_error('Imposible mostrar la imagen.'E_USER_WARNING);  break;
        }
        
        
imagedestroy($newImg);
        return 
true;
    }else{
        
$name array_shift(explode("."$img2)).".th.".strtolower(array_pop(explode("."$img)));
        
        if (!
file_exists($name)) {
            switch (
$imgInfo[2]) {
                case 
1imagegif($newImg$name); break;
                case 
2imagejpeg($newImg$name);  break;
                case 
3imagepng($newImg$name); break;
                default:  
trigger_error('Imposible mostrar la imagen.'E_USER_WARNING);  break;
            }
        }
        return 
$name;
    }
}

$inicio array_sum(explode(' 'microtime()));

if (
$_SERVER['argc'] < 2) {
    
trigger_error('Uso: thumbs.php directorio [int ancho] [int alto]'E_USER_ERROR);
    return 
false;
}

$dir $_SERVER['argv'][1]."/";
$width = isset($_SERVER['argv'][2]) ? $_SERVER['argv'][2] : 150 ;
$height = isset($_SERVER['argv'][3]) ? $_SERVER['argv'][3] : 150 ;

$handle opendir($dir);
while (
$elemento readdir($handle)) {
    if (
$elemento != "." && $elemento != ".." && $elemento != "Thumbs.db" && !strpos($elemento".th.")) {
        
thumb($dir.$elemento$width$heightfalsetrue);
    }
}
$fin array_sum(explode(' 'microtime()));
echo 
"\nCompletado en ".($fin $inicio)." seg";
?>
__________________
Sin Ideas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:47.