Ver Mensaje Individual
  #5 (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_y00$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,