Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/09/2007, 20:56
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: thumbnails cuadrados

Mira, puedes adaptar el script como lo necesites. Si tus imagenes están en una BD, pues puedes recibir por la url el id de la imagen, algo como thumb.php?id=165, luego, en el script, chequear la base de datos, sacar la ruta y ya. O puede convertir el script en una funcion que reciba como parámetros la url del archivo y el tamaño:

Código PHP:
function thumb_sq ( $archivo , $size = 100 ) {
if(empty(
$archivo)) {
echo 
'No se especifico la ruta';
exit;
}
 
//Si no se ha especificado el tamaño del cuadrado
$pix = (!is_numeric($size) or $size < 1) ? 100 : $size;
 
//Averiguamos la extension del archivo, porque de eso van a depender las funciones a usar
$extension = pathinfo($archivo);
$extension = $extension['extension'];
 
//Escoger la funcion. Usamos la funcion switch
switch($extension) {
case 
'jpg':
$f1 = "imagecreatefromjpeg";
$f2 = "imageJpeg";
$type = "jpeg";
break;
case 
'gif':
$f1 = "imagecreatefromgif";
$f2 = "imageGif";
$type = "gif";
break;
case 
'png':
$f1 = "imagecreatefrompng";
$f2 = "imagePng";
$type = "png";
break;
default:
echo 
'Error, tipo desconocido de archivo: '.$extension;
exit;
break;
}
 
$img_fuente = @$f1($archivo);
 
//Dimensiones
$img_ancho = imagesx($img_fuente);
$img_alto = imagesy($img_fuente);
$pix = intval($_GET['pix']);
$diferencia_ancho = $img_ancho/$pix;
$diferencia_alto = $img_alto/$pix;
 
if(
$diferencia_ancho < $diferencia_alto) {
$nuevo_ancho = $pix;
$prop = $nuevo_ancho/$img_ancho;
$nuevo_alto = round($img_alto*$prop);
$dist_x = 0;
$dist_y = ($pix-$nuevo_alto)/2;
} else {
$nuevo_alto = $pix;
$prop = $nuevo_alto/$img_alto;
$nuevo_ancho = round($img_ancho*$prop);
$dist_x = ($pix-$nuevo_ancho)/2;
$dist_y = 0;
}
 
$imagen = imagecreatetruecolor($pix, $pix);
imagecopyresampled($imagen, $img_fuente, $dist_x, $dist_y, 0, 0, $nuevo_ancho, $nuevo_alto, $img_ancho, $img_alto);
Header("Content-type: image/$type");
$f2($imagen);

} 
Bien, asi debe funcionar. Al hacer la consulta a la bd, para mostrar simplemente haces:

thumb.php
Código PHP:
// ........
$sql = mysql_query($sql);
$img = mysql_fetch_assoc($sql);
 
thumb_sq($img['url']); 
Un saludo,