Retroceder   Foros del Web > Programación para sitios web > PHP

Respuesta
 
Herramientas Desplegado
Antiguo 12-mar-2008, 14:49   #1 (permalink)
iontxu ha deshabilitado el karma
 
Avatar de iontxu
 
Fecha de Ingreso: marzo-2008
Mensajes: 51
Sonrisa APORTE: Función que redimensiona imagenes

Hola!

Os paso una de mis primeras funciones en php. Como tal es sencillísima, pero a la par es efectiva. Seguro que se puede mejorar y os agradecería que me contestaseis si se os ocurre cualquier tipo de mejora o si existe alguna manera más fácil de hacerlo.

¿Para qué sirve?
Para redimensionar una imagen.

¿Cómo funciona?
Se le llama a la función (que en este caso he llamado "redimensionar") pasándole como argumentos:
  • la ruta relativa de la imagen respecto al fichero desde el cual la invocamos
  • el ancho máximo
  • el alto máximo
Compara las dimensiones de la imagen con las que le permitimos que tenga como máximo.
  • Si nuestra imagen es menor, ni la acorta ni la expande.
  • Si excede más de ancho que de alto, primero fija el ancho y luego el alto en proporción.
  • Si pasa eso mismo con el alto, cambian los roles de alto y ancho y opera de igual manera.
Por último muestra la imagen.

Ahí va el código:
Código PHP:
<?php

/*Función REDIMENSIONAR
Toma la ruta de una imagen, un valor máximo 
de ancho y otro máximo de alto. Si la imagen 
rebasa dichas medidas, calcula las medidas 
máximas que podría tener manteniendo el 
formato original para no salirse de las medidas
indicadas.

Finalmente la función imprime la imagen.
*/

function redimensionar($ruta,$ancho,$alto){

//Obtenemos las dimensiones, la ruta es absoluta.
$dim getimagesize($ruta);
/*getimagesize() pasa un array a la variable
$dim tal que $dim[0] contiene el ancho de la imagen 
y dim[1] contiene el alto.*/
if($dim[1]){
//Para asegurarnos de que dim[1] es diferente de cero
$cociente $dim[0] / $dim[1];
}
if(
$alto){
//Para asegurarnos de que alto es diferente de cero
$coc_max $ancho $alto;
}

    if((
$dim[0]<=$ancho)&&($dim[1]<=$alto)){
    
/*En este caso no pasa nada y 
    la imagen se imprime con su tamaño original*/
    
$ancho $dim[0];
    
$alto $dim[1];
    }else{
        if(
$cociente>=$coc_max){
        
/*En este caso el factor más restrictivo
        va a ser el ancho de la foto*/
        
$alto $ancho $cociente;
        }else{
        
/*En este caso el factor restrictivo 
        va a ser la altura de la foto*/
        
$ancho $alto $cociente;
        }
    }
    echo 
"<img src='$ruta' width='$ancho' height='$alto'>";
    
}
?>
Un ejemplo de cómo llamar a la imagen sería:
Código PHP:
<?php

include ("funciones/redimensionar.php"); /*ruta relativa del archivo 
                                          que contiene la función*/

$mi_ruta_relativa "fotos/imagen01.jpg"/*ruta relativa de la 
                                          imagen a mostrar*/

redimensionar($mi_ruta_relativa,600,400);

?>
Que sacaría a pantalla la foto "imagen01.jpg" sin que rebasase las dimensiones máximas de 600px de ancho y 400px de alto.

¿Cómo frenar la función en caso de que la imagen solicitada no exista?

Un saludo a todos los usuarios del foro.
iontxu está desconectado   Responder Citando
Antiguo 12-mar-2008, 15:14   #2 (permalink)
quinqui tiene algunos puntos positivos de karma
 
Avatar de quinqui
 
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 403
Re: Función que redimensiona imagenes

Holas :)

Está muy buena tu explicación previa, felicitaciones ^_~

Lo último imagino es pregunta, cierto?

A la función efectivamente le faltan algunas pequeñas verificaciones previas. Como dices en tu pregunta, te falta validar:

- si el archivo enrutado existe.
- si el archivo enrutado es una imagen válida.
- si el tamaño en bytes de la imagen es de un mínimo aceptable.
- lo mismo con las dimensiones, creo yo.

y eso se me ocurre ahora. seguro los demás foristas te dirán más detalles :)
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
quinqui está desconectado   Responder Citando
Antiguo 12-mar-2008, 15:20   #3 (permalink)
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 14.229
Re: Función que redimensiona imagenes

Hola iontxu,

Gracias por tu aporte, en un futuro te pido que si vas a aportar algo, pongas en el titulo del tema APORTE, así sera mas fácil ubicarlo en el buscador.

Saludos.

Titulo editado
__________________
Blog Web
GatorV está desconectado   Responder Citando
Antiguo 12-mar-2008, 15:40   #4 (permalink)
iontxu ha deshabilitado el karma
 
Avatar de iontxu
 
Fecha de Ingreso: marzo-2008
Mensajes: 51
Re: Función que redimensiona imagenes

Así lo haré, muchas gracias a ti por la ayuda.
iontxu está desconectado   Responder Citando
Antiguo 13-jul-2008, 21:32   #5 (permalink)
ahhhh_my_god ha deshabilitado el karma
 
Fecha de Ingreso: enero-2007
Mensajes: 7
Respuesta: APORTE: Función que redimensiona imagenes

hola amigos como están tengo una consulta bueno de hecho tratar de poder hacer mas completa la redimencion de una imagen en php... la pregunta que no se me ocurre como hacerla es redimensionar una imagen pero mantenieando el ancho y alto estricto..

esto es si le digo a la funcion de 100 x 200 me genere una imagen de ese tipo y solo muestre una parte de la imagen si no cabe en ese espacio...

no se si me entendieron me ha costado demasiado tratar de desarrollar el algoritmo. si alguien lo tiene o se le ocurre por favor ayude asi tb aprovechamos de complementar lo que ya existe como un segundo modo de redimencionar una imagen.
ahhhh_my_god está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 23:46.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93