|
dani
16 de agosto de 2004 11:01
|
> Miniaturas
¿Hay alguna forma de aprovechar la capacidad de SPIP de generar miniaturas en los artículos?
Cuando uno sube una imágen a un sitio SPIP, éste genera una miniatura (de hecho se pueden configurar las dimensiones de las miniaturas). En un esqueleto, la baliza #LOGO_DOCUMENT del bucle DOCUMENTS permite visualizar las miniaturas.
|
|
Pablo Iranzo Gómez
1ro de noviembre de 2004 17:55
|
> Miniaturas
Esta pregunta va algo relacionada con las galerías web.
Estoy utilizando una galería, parecida al ejemplo en español que ponéis en otra respuesta, el gran problema que tiene dicho sistema, es que la imagen reducida, que en el mejor de los casos, se puede utilizar con el #LOGO_DOCUMENT, va bien para mostrar el menú con todas las fotos, pero para la vista en grande, sería interesante tener una imagen intermedia al tamaño completo (algo adaptado para ver en pequeño, dentro del formato de la web, pero que permitira seguir cargando la imagen completa si aún así, se deseara más calidad).
Hasta ahora, con logotipos, he utilizado el |reduire_image400 y sin problemas, pero con los documentos adjuntos no hay forma (ni con #LOGO_DOCUMENT, ni con #EMBED_DOCUMENT, ni con #URL_DOCUMENT).
Mirando las órdenes a las que llama el |reduire_image, he creado una función php llamada reducir_imagen, con los mismos parámetros, a la que le paso el #URL_DOCUMENT y el tamaño deseado y me genera una miniatura en la caché de SPIP con el tamaño apropiado (en su carpeta correspondiente, etc), el problema es que a partir de ese punto, me substituye las miniaturas por defecto de la web (150 px) para esos documentos por unas de 400px, haciendo que la web sea imposible de visitar.
Si por el contrario no reduzco la imagen y la escalo utilizando html (como hace por defecto la galería que tengo hecha), con imágenes cada vez mayores, que en la actualidad rondan los 500 Kb, no se hace práctico que para mostrar una miniatura, cargue una imagen tan grande, dando sensación de lentitud de la web.
¿Alguna idea de cómo conseguirlo?
Saludos
Pablo
|
|
joseluis
1ro de diciembre de 2004 00:00
|
> Miniaturas
Hola Pablo. Quizás si le echas un vistazo a esto podamos entre unos y otros crear ese buscado filtro...
Como ya expliqué en la lista de correo ando liado tratando de adaptar un filtro que utilizaba con el 1.7.2 (el de limit_image_size -de http://spip-contrib.net/article251.html- que funcionaba de maravilla y que ha dejado de funcionar con el 1.8b2) para que fuera cual fuera el tamaño
original de las imágenes subidas e incluidas en los artículos no rebasara un valor y no se destrozara el esqueleto.
No me sirve el reduire_logo, también lo he probado, pues no modifica el tamaño de las imágenes que hay "dentro" del artículo, sólo los logos.
He conseguido que me funcione unas veces sí y otras no y no encuentro por qué.
En estos enlaces funciona:
http://www.craaltaribagorza.org/article.php3?id_article=272
http://www.craaltaribagorza.org/article.php3?id_article=98
Y en este enlace, o en sommaire, no me funciona:
http://www.craaltaribagorza.org/article.php3?id_article=287
La función a colocar en mes_fonctions.php3 sería:
// === REDUCIR TAMAÑO IMÁGENES
// filtro que reduce el tamaño de las imágenes si sobrepasa un ancho dado y además puede crear un enlace al original
// REVISIÓN Y REFUNDIDO DEL ARTÍCULO Y DE LOS COMENTARIOS AÑADIDOS EN: http://www.spip-contrib.net/article.php3?id_article=251
// Se utiliza así [(#TEXTE|reducir_imagen{350,1})]
// El primer valor límita el ancho y el segundo determina si queremos que se cree enlace a la imagen a tamaño original o no. Si lo dejamos a 0 no lo crea
function reducir_imagen($string, $maximo=0, $enlace=0)
{
$reg = "/<img src='IMG\/([^']+)' ([^ ]+) width=[^ ]+ height=[^ ]+
([^>]+)>/";
preg_match_all ($reg, $string, $matches);
$to_return = $string;
for ($i=0; $i< count($matches[0]); $i++)
{
$img = $matches[1][$i];
$bef = $matches[2][$i];
$aft = $matches[3][$i];
$imagen = "IMG/".$img;
if ($img!="") //si la imagen existe...
{
$dim_imagen = @GetImageSize($imagen);
$ancho_imagen = $dim_imagen[0];
$alto_imagen = $dim_imagen[1];
if ($ancho_imagen+$alto_imagen>0) //si la imagen está
guardada en la base...
{
if ($ancho_imagen>=$maximo) //si es más grande que el
límite establecido en $maximo...
{
$ancho_nuevo = $maximo;
$alto_nuevo =
round($maximo*($alto_imagen/$ancho_imagen));
if ($enlace==1) // si queremos enlace con la
imagen a tamaño original la puede mostrar en una ventana independiente...
{
$enlace_ini = '<a href="#"
OnClick="javascript:window.open(\'IMG/'.$img.'\', \'_blank\',
'.'\'toolbar=0, location=0, directories=0, status=0, scrollbars=1,
resizable=1, copyhistory=0, menuBar=0,'.'width='.$ancho_imagen.',
height='.$alto_imagen.'\')" >';
$enlace_fin = "</a>";
}
$param = "height=\"".$alto_nuevo."\"
width=\"".$ancho_nuevo."\"";
}
else
{
$param = "";
}
}
$to_return = preg_replace("<".$matches[0][$i].">",$enlace_ini."<img
src='".$imagen."' ".$param." ".$bef." ".$aft." >".$enlace_fin,$to_return,1);
}
}
return $to_return;
}
// === FIN REDUCIR TAMAÑO IMÁGENES
Spip-es@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-es
|