Foros del Web » Programando para Internet » PHP »

ancho y alto en los thubnails (redcccion de la imagen original)

Estas en el tema de ancho y alto en los thubnails (redcccion de la imagen original) en el foro de PHP en Foros del Web. hola estoy cerando una galeria de imagenes y tengo un problema no con la creacion de thumbnails si no con generar un ancho y alto ...
  #1 (permalink)  
Antiguo 02/05/2005, 13:55
 
Fecha de Ingreso: noviembre-2003
Mensajes: 34
Antigüedad: 14 años
Puntos: 0
Pregunta ancho y alto en los thubnails (redcccion de la imagen original)

hola estoy cerando una galeria de imagenes y tengo un problema no con la creacion de thumbnails si no con generar un ancho y alto adeacuado para este, ya q la imagen original puede tener mas ancho o ma alto y quisiera saber si pudieran facilitar una funcion para reducir correctamente bueno para q me entiendan aca les paso mi funcion

function preview_img($folder,$img)
{
$ruta="gallery/gallery/".$folder."/".$img;
$original = imagecreatefromjpeg($ruta);
$thumb = imagecreatetruecolor(150,150); // <--- aqui le estoy asignando un tamaño de 150 px q seria bien para una imagen cuadrada para una imagen q sea mas ancha o alta se veria distorsionada!!!
$ancho = imagesx($original);
$alto = imagesy($original);
imagecopyresampled($thumb,$original,0,0,0,0,150,15 0,$ancho,$alto);
imagejpeg($thumb,$folder."/t".$img,60);
}

//bueno me gustaria q me faciliten al formula o funcion q peude ahcer eso

muchas gracias
  #2 (permalink)  
Antiguo 02/05/2005, 14:15
Avatar de aRApO  
Fecha de Ingreso: diciembre-2004
Mensajes: 11
Antigüedad: 13 años
Puntos: 0
Hola,
encontre un script que hacia eso lo retoque chapuceramente y añadi 'imagecreatetruecolor' para que las imagenes se vieran bien.

En picsize le pones el tamaño maximo tanto de ancho como de largo que desees que tenga el thumbnail.

Código:
     ...
     $imagen = mysql_result($consulta,0,"binario");

    // Se crea la imagen desde el campo binario de la BD 
    $img = imagecreatefromstring($imagen); 

    // Tamaño del Thumbanil (de la imagen a generar ..) 
    $picsize = 70; 
     
    // Se obtienen los datos del ancho y alto de la imagen. 
    $new_w1 = imagesx($img); 
    $new_h1 = imagesy($img); 

    // Se calcula la relación alto/ancho 
    $aspect_ratio = $new_h1 / $new_w1; 
     
    // Se ajusta al nuevo tamaño 
    $new_w = $picsize; 
    $new_h = abs($new_w * $aspect_ratio); 
	
	if ($new_h > $picsize) {
	    $new_h = $picsize; 
	    $new_w = abs($new_h * 1 / $aspect_ratio);	
	}

    // Se crea la mascara de la imagen nueva 
    $dst_img = imagecreatetruecolor($new_w,$new_h); 

    // Se copia y reajusta el nuevo tamaño en la nueva imagen. 
    imagecopyresized($dst_img,$img,0,0,0,0,$new_w,$new_h,imagesx($img),imagesy($img)); 

    // Se entrega al buffer de salida (navegador en este caso) la imagen en formato JPEG 
    // El tercer parámetro (100) indica la calidad de la imagen: en porcentaje relación calidad/peso imagen. 
    imagejpeg($dst_img,'',100);
  #3 (permalink)  
Antiguo 02/05/2005, 15:17
 
Fecha de Ingreso: noviembre-2003
Mensajes: 34
Antigüedad: 14 años
Puntos: 0
ahhh bueno muchas gracias!!! todo me salio ok :D solo hay un pequeño problemita en la formula pero es solo de cambiar algunos valores

function preview_img($folder,$img)
{ global $db;
$ruta="gallery/gallery/".$folder."/".$img;
$original = imagecreatefromjpeg($ruta);
$ancho = imagesx($original);
$alto = imagesy($original);
//
$picsize=150;
// Se calcula la relación alto/ancho
$aspect_ratio = $ancho / $alto;

// Se ajusta al nuevo tamaño
$new_w = $picsize;
$new_h = abs($new_w * $aspect_ratio);

if ($new_h > $picsize) {
$new_h = $picsize;
$new_w = abs($new_h * 1 / $aspect_ratio);
}
//

$thumb = imagecreatetruecolor($new_h,$new_w);
imagecopyresampled($thumb,$original,0,0,0,0,$new_h ,$new_w,$ancho,$alto);
imagejpeg($thumb,$folder."/t".$img,60);
}

asi quedo mi funcion al final el problema es q es en la funcion imagecreatetruecolor y imagecopyresampled en width debemos poner $new_h y en height $new_w para q salga correctamente

muchas gracias ;)
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 04:47.