Foros del Web » Programando para Internet » PHP »

Redimensionar según tamaño y guardar en caché del navegador

Estas en el tema de Redimensionar según tamaño y guardar en caché del navegador en el foro de PHP en Foros del Web. Tengo una especie de mini galería, que usando javascript redimensiona a escala las imagenes (no está muy depurado lo hice de prueba): Código PHP: <link rel="stylesheet" href="./zoneCopper.css" type="text/css"> ...
  #1 (permalink)  
Antiguo 09/09/2004, 10:02
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Redimensionar según tamaño y guardar en caché del navegador

Tengo una especie de mini galería, que usando javascript redimensiona a escala las imagenes (no está muy depurado lo hice de prueba):

Código PHP:
<link rel="stylesheet" href="./zoneCopper.css" type="text/css">
<table class="forumline">
<?
$columnas
=5;
$anchomax=100;
$altomax=100;
$reduccion="OnLoad=\"X=$anchomax;Y=$altomax;if ( this.width > X && this.height < Y ){this.height = ( X * this.height ) / this.width;this.width= X};if (this.width < X && this.height > Y ){this.width = ( Y * (this.width) ) / this.height;this.height= Y};if ( this.width > X && this.height > Y ){if (this.width/this.height>=1){{this.height = ( X * this.height ) / this.width;this.width= X}}else {this.width = ( Y * (this.width) ) / this.height;this.height= Y}}\"" ;
$origen "images"
if (
$vcarga opendir($origen)) 
    { 
?>
    <th colspan="<?=$columnas?>">Directorio: <?=$origen?></th></tr>
    <? 
    $cont
=1;
    while(
$file readdir($vcarga)) 
        { 
        if (
$file != "." && $file != ".." && (eregi(".png",$file) || eregi(".jpeg",$file) || eregi(".jpg",$file) || eregi(".gif",$file))) 
            {
            if (
$cont==0
                {
                echo 
"<tr>";
                }
            echo 
"<td bgcolor=\"#444444\" align=\"center\" width=\"17%\" ><br><a href=\"image.php?imagen=$origen/$file\" target=\"_blank\" ><img src=\"image.php?imagen=$origen/$file\" $reduccion border=\"0\"></a><br><br>$file</td>"
            if (
$cont==$columnas
                {
                echo 
"<tr>";
                
$cont=0;
                }
            
$cont++;
            } 
        } 
    
closedir($vcarga); 
    } 
if (
$cont==1)
    { echo
"</tr>";}
?>
</table>
El problema estaba que al redimensionar si se guarda en la cache del navegador la imagen, a veces al volver a cargar la página mostraba la imagen con sus dimensiones normales en vez de aplicar el javascript. Entonces, leyendo en una FAQ http://www.forosdelweb.com/showthrea...931#post274931 saqué el script para que no se guarden en el caché del navegador, y funciona.

Pero cómo en realidad lo que quiero es que no se guarde en la caché sólo en el caso de que la imagen supere las dimensiones máximas, modifique un poco el código de la FAQ:

Código PHP:
<?php 
// Cabecera de imagen 
$a getimagesize($_GET['imagen']);
header("Content-Type: " $a['mime']); 

// Cabeceras de NO CACHE 
if (($a['0']>100)||($a['1']>100))
    {
    
header"Expires: Mon, 20 Dec 1998 01:00:00 GMT" ); 
    
header"Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT" ); 
    
header"Cache-Control: no-cache, must-revalidate" ); 
    
header"Pragma: no-cache" ); 
    }

// Leemos la imágen 
@readfile($_GET['imagen']); 

?>
Y aún así no parece que funcione . Y ya no entiendo porqué

Si alguién me pudiese iluminar

Salu2 ;)
__________________
[+]
[+]

Última edición por yoseman; 09/09/2004 a las 10:03
  #2 (permalink)  
Antiguo 10/09/2004, 07:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Incluso la generación de tu "Thumbnail" (la imagen redimensionada) .. deberías hacerla completamente desde PHP usando las librerias GD (www.php.net/gd) .. Ejemplos tienes en las FAQ's del foro PHP.

Así optimizas tu ancho de banda por qué será PHP el que desde el "servidor" genere tu imagen a la escala que corresponda y será entregada al cliente (tu navegador). A su vez si usas las cabeceras HTTP que vistes ya en otra faq ahí veras si el tamaño es superior al que deseas .. aplicas un "if" para "cachear" la imagen o no según requieras.

Un saludo,
  #3 (permalink)  
Antiguo 10/09/2004, 14:07
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Muchas gracias, me he servido de la FAQ sobre la creación de thumbnails.
El problema está para crear un thumbnail de una imagen GIF.
Alguién sabe si existe alguna argucia para crear un thumbnail de una imagen GIF, sin tener que usar la gunción ImageGIF() que no funciona...?

Salu2 ;)
__________________
[+]
[+]
  #4 (permalink)  
Antiguo 10/09/2004, 14:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Puedes generar un PNG (que si no me equivoco pueden ser tambien con fondo "transparente" .. principal virtud de los GIF).

De todas formas .. no sé que versión de GD usas pero .. la última (o de las últimas) ya soportan la creación de GIF (cosa que antes sólo estaba soportado en modo Lectura).

Un saludo,
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 01:11.