Foros del Web » Programando para Internet » PHP »

APORTE: Función que redimensiona imagenes

Estas en el tema de APORTE: Función que redimensiona imagenes en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 12/03/2008, 14:49
Avatar de iontxu  
Fecha de Ingreso: marzo-2008
Mensajes: 65
Antigüedad: 16 años, 8 meses
Puntos: 7
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.
  #2 (permalink)  
Antiguo 12/03/2008, 15:14
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 20 años, 3 meses
Puntos: 56
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*
  #3 (permalink)  
Antiguo 12/03/2008, 15:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
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
  #4 (permalink)  
Antiguo 12/03/2008, 15:40
Avatar de iontxu  
Fecha de Ingreso: marzo-2008
Mensajes: 65
Antigüedad: 16 años, 8 meses
Puntos: 7
Re: Función que redimensiona imagenes

Así lo haré, muchas gracias a ti por la ayuda.
  #5 (permalink)  
Antiguo 13/07/2008, 21:32
(Desactivado)
 
Fecha de Ingreso: enero-2007
Mensajes: 13
Antigüedad: 17 años, 9 meses
Puntos: 0
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.
  #6 (permalink)  
Antiguo 11/12/2008, 07:34
 
Fecha de Ingreso: junio-2008
Mensajes: 119
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: APORTE: Función que redimensiona imagenes

excelente....
  #7 (permalink)  
Antiguo 14/01/2009, 13:27
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: APORTE: Función que redimensiona imagenes

uh loko , no puede andar tan perfecto , es lo que estaba buscando ;) , karma
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #8 (permalink)  
Antiguo 04/06/2009, 12:01
 
Fecha de Ingreso: abril-2009
Mensajes: 6
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: APORTE: Función que redimensiona imagenes

Aportazo papa sos un genio me recontra sirve es lo que necesitaba GRACIAS!!
  #9 (permalink)  
Antiguo 02/08/2009, 22:00
Avatar de murderer  
Fecha de Ingreso: marzo-2009
Ubicación: Argentina/Misiones/Iguazu/Localhost
Mensajes: 196
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: APORTE: Función que redimensiona imagenes

Muchas gracias por tu aporte!

Karma


Saludos!
  #10 (permalink)  
Antiguo 04/08/2009, 11:57
(Desactivado)
 
Fecha de Ingreso: junio-2009
Mensajes: 256
Antigüedad: 15 años, 5 meses
Puntos: 1
Respuesta: APORTE: Función que redimensiona imagenes

gracias por tu aporte.

saludos.
  #11 (permalink)  
Antiguo 06/11/2009, 06:11
 
Fecha de Ingreso: noviembre-2009
Mensajes: 1
Antigüedad: 15 años
Puntos: 0
Respuesta: APORTE: Función que redimensiona imagenes

Enhorabuena iontxu!!!, llevaba mucho tiempo buscando justo esto!, muchas gracias, funciona genial :D
  #12 (permalink)  
Antiguo 02/03/2010, 18:15
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 15 años, 2 meses
Puntos: 6
Respuesta: APORTE: Función que redimensiona imagenes

exelente la funcion! una consulta, cual seria la ruta en el caso de que recibimos la imagen de un formulario?
  #13 (permalink)  
Antiguo 05/03/2010, 12:40
 
Fecha de Ingreso: septiembre-2009
Mensajes: 402
Antigüedad: 15 años, 2 meses
Puntos: 6
Respuesta: APORTE: Función que redimensiona imagenes

logre hacer funcionar la imagen, exelente!!!
muchisimas gracias x el aporte.
saludos cordiales.
ariel
  #14 (permalink)  
Antiguo 05/04/2012, 15:59
 
Fecha de Ingreso: diciembre-2005
Mensajes: 87
Antigüedad: 18 años, 10 meses
Puntos: 3
Respuesta: APORTE: Función que redimensiona imagenes

Como haria para que me redimensione la imagen y luego me la suba?

Código PHP:
if(!((strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg") || strpos($tipo_archivo"png")) && ($tamano_archivo <= 1048576))) 
        {  
        echo 
"<p class='advertenciabox'>La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif - .jpg - .png<br><li>se permiten archivos de 1 MB máximo.</td></tr></table></p>";
        }
else
{
if (
move_uploaded_file($HTTP_POST_FILES['fichero']['tmp_name'], $ruta $ID_Usuario "/" $seccion $nombre_archivo)){ 
       echo 
"<p class='informacionbox'>La fotografía ha sido cargada correctamente.<br><br><b>Titulo:</b> " $Titulo "<br><br><b>Descripción:</b> " $Descripcion "</p>"
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

SíEste tema le ha gustado a 7 personas




La zona horaria es GMT -6. Ahora son las 16:06.