Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   APORTE: Función que redimensiona imagenes (http://www.forosdelweb.com/f18/aporte-funcion-que-redimensiona-imagenes-565428/)

iontxu 12/03/2008 14:49

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.

quinqui 12/03/2008 15:14

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 :)

GatorV 12/03/2008 15:20

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

iontxu 12/03/2008 15:40

Re: Función que redimensiona imagenes
 
Así lo haré, muchas gracias a ti por la ayuda.

ahhhh_my_god 13/07/2008 21:32

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.

Chuecko 11/12/2008 07:34

Respuesta: APORTE: Función que redimensiona imagenes
 
excelente....

tata009 14/01/2009 13:27

Respuesta: APORTE: Función que redimensiona imagenes
 
uh loko , no puede andar tan perfecto , es lo que estaba buscando ;) , karma

joivan 04/06/2009 12:01

Respuesta: APORTE: Función que redimensiona imagenes
 
Aportazo papa sos un genio me recontra sirve es lo que necesitaba GRACIAS!!

murderer 02/08/2009 22:00

Respuesta: APORTE: Función que redimensiona imagenes
 
Muchas gracias por tu aporte!

Karma :arriba:


Saludos!

xfer2 04/08/2009 11:57

Respuesta: APORTE: Función que redimensiona imagenes
 
gracias por tu aporte.

saludos.

Dors_Venabili 06/11/2009 06:11

Respuesta: APORTE: Función que redimensiona imagenes
 
Enhorabuena iontxu!!!, llevaba mucho tiempo buscando justo esto!, muchas gracias, funciona genial :D

apustilnik 02/03/2010 18:15

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?

apustilnik 05/03/2010 12:40

Respuesta: APORTE: Función que redimensiona imagenes
 
logre hacer funcionar la imagen, exelente!!!
muchisimas gracias x el aporte.
saludos cordiales.
ariel

nomakon 05/04/2012 15:59

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>"



La zona horaria es GMT -6. Ahora son las 09:01.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.