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.