Foros del Web » Programando para Internet » PHP »

otra vez redimensionar

Estas en el tema de otra vez redimensionar en el foro de PHP en Foros del Web. Hola a todos/as: tengo esta estructura en el servidor: imagenes: directorio donde se almacenan imagenes subidas mediante un formulario. panel: directorio donde se almacena el ...
  #1 (permalink)  
Antiguo 31/01/2008, 06:32
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
otra vez redimensionar

Hola a todos/as: tengo esta estructura en el servidor:

imagenes: directorio donde se almacenan imagenes subidas mediante un formulario.

panel: directorio donde se almacena el archivo imagenes.php y el archivo redimensionar.php

la ruta de las imagenes que subo al servidor a la carpeta o directorio 'imagenes' la almaceno en un campo de la base de datos llamado imagen, y como digo, recoge la ruta de la imagen en el servidor, tal que ese campo siempre tiene esto:
../imagenes/

bien. ahora en el archivo imagenes.php muestro la imagen mediante este código:

Código PHP:
<img alt=".$row["titulo"]." src='redimensionar.php?img=".$row["imagen"]."&alto=120&ancho=120' border=0

y en el archivo redimensionar.php tiene este código:

Código PHP:
<?php
$extension
=strrchr($_REQUEST['img'],".");
    
    if (
$extension==".jpeg"$imgcache=imagecreatefromjpeg($_REQUEST['img']);
    elseif (
$extension==".gif"$imgcache=imagecreatefromgif($_REQUEST['img']);
    elseif (
$extension==".tiff"$imgcache=imagecreatefromtiff($_REQUEST['img']);
    else 
$imgcache=imagecreatefrompng($_REQUEST['img']);
    
    
$ancho=imagesx($imgcache);
    
$alto=imagesy ($imgcache);

    if (
$ancho>100$nuevo_ancho=$_REQUEST['ancho'];
    else 
$nuevo_ancho=$ancho;
    
    
$nuevo_alto=($nuevo_ancho*$alto)/$ancho;    
    
    if (
$nuevo_alto>100$nuevo_alto=$_REQUEST['alto'];
    
    
$nuevo_ancho=($nuevo_alto*$ancho)/$alto;
    

    
$imgmini=imagecreatetruecolor($nuevo_ancho,$nuevo_alto);
          
imagecopyresampled($imgmini,$imgcache,0,0,0,0,$nuevo_ancho,$nuevo_alto,imagesx($imgcache),imagesy ($imgcache));

        if (
$extension==".jpeg"imagejpeg($imgmini);
    elseif (
$extension==".gif"imagegif($imgmini);
    elseif (
$extension==".tiff"imagetiff($imgmini);
    else 
imagepng($imgmini);

    
imagedestroy ($imgmini);
        
imagedestroy ($imgcache);
?>
bueno. pues resulta que no me muestra la imagen. alguien sabe por qué?
  #2 (permalink)  
Antiguo 31/01/2008, 07:44
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 5 meses
Puntos: 25
Re: otra vez redimensionar

por que no haces algo mejor y te quitas ese karma de ensima.. te vas a la pagina de este amigo. te descargas la Clase que medio mundo usa en Foros Del Web y la usas.

PHPImagen es una herramienta que facilita ciertas tareas a la hora de trabajar con imágenes. La finalidad es simplificar el proceso usualmente tedioso de redimensionar y etiquetar con imágenes y/o texto las imágenes on the fly, además de cambiar su color. Esto quiere decir que el script genera automáticamente una imagen tras su ejecución, la que luego, según la decisión del usuario, serán enviada como imagen, como archivo adjunto descargable, o será guardada en el servidor.

El script requiere PHP >=5, la librería GD y opcionalmente la librería FreeType. La mayoria de webservers trae todas estas librerías instaladas .

http://php.myokram.info/phpimagen/

no te arrepentiras
  #3 (permalink)  
Antiguo 31/01/2008, 08:53
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: otra vez redimensionar

Gracias Eddwwin.

@estibaliz2006, hay varias cosas qué corregir/pulir en tu código. Primero, para obtener la extensión de tu archivo tienes la función pathinfo():

Código PHP:
$extension pathinfo($_REQUEST['img'], PATHINFO_EXTENSION); 
Luego, para crear la imagen , puedes usar un switch en vez de un if...else:
Código PHP:
switch($extension) {
    case 
'jpeg':
    case 
'jpg':
        
$imgcache imagecreatefromjpeg($_REQUEST['img']); 
        break;
    case 
'gif':
        
$imgcache imagecreatefromgif($_REQUEST['img']); 
        break;
    case 
'tiff':
        
$imgcache imagecreatefromtiff($_REQUEST['img']); 
        break;
    default:
        
$imgcache imagecreatefrompng($_REQUEST['img']); 
        break;
}
 
# .........
 
switch($extension) {
    case 
'jpeg':
    case 
'jpg':
        
imagejpeg($imgmini); 
        break;
    case 
'gif':
        
imagegif($imgmini); 
        break;
    case 
'tiff':
        
imagetiff($imgmini); 
        break;
    default:
        
imagepng($imgmini); 
        break;

Tu código está bien, excepto que no considerabas a los archivos con extensión .jpg

Te aparece la X roja?

Y si abres directamente ese archivo redimensionar.php en el navegador, qué error te muestra?

Un saludo,
  #4 (permalink)  
Antiguo 31/01/2008, 13:45
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: otra vez redimensionar

Hola Okram. gracias por tu ayuda. una cuestión: he estado echando un vistazo a tu script para paginar resultados. es estupendo y bastante completo. además las explicaciones son bastante buenas. lo he entendido a la primera. pero (no sé si estaré abusando de tí) ¿como harías para mostrar los resultados en dos columnas (o tres o cuatro...) en lugar de sólo en una?

gracias por tu ayuda
  #5 (permalink)  
Antiguo 31/01/2008, 16:53
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: otra vez redimensionar

Hay una FAQ de PHP que explica el tema:

FAQ PHP # 8: ¿Cómo distribuir los resultados de un query en columnas?

Lo único que hay que cambiar en ese ejemplo es el uso de la función de PHP mysql_fetch_row()por el método de la clase $paging->fetchResultado()

Si tienes problemas abre un nuevo tema dedicado exclusivamente a ello, pues este resulta inapropiado para tratarlo.

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 18:09.