Bueno antes que nada, este codigo se utiliza para REDIMENSIONAR una imagen a el tamaño que nosotros deseamos.
Este sistema usa la libreria GD de PHP, asi que necesitas tenerla instalada para que funcione el scriptOJO : Este sistema no crea imagenes redimensionadas, sino que las redimensionas y las guarda en la memoria de tal forma que no ocupa extra de espacio.
Vamos con el codigo:
Redimensionar.php
<?php
$nombre=basename($_GET['imagen']);
$datos = getimagesize($nombre);
if(!$_GET[anchura]) {
$anchura=500;
} else {
$anchura = $_GET[anchura];
}
if(!$_GET[hmax]) {
$hmax=375;
} else {
$hmax = $_GET[hmax];
}
if($datos[0] < $anchura) {
$anchura = $datos[0];
}
if($datos[1] < $hmax) {
$hmax = $datos[1];
}
if($datos[2]==1){$img = @imagecreatefromgif($nombre);}
if($datos[2]==2){$img = @imagecreatefromjpeg($nombre);}
if($datos[2]==3){$img = @imagecreatefrompng($nombre);}
$ratio = ($datos[0] / $anchura);
$altura = ($datos[1] / $ratio);
if($altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
$thumb = imagecreatetruecolor($anchura,$altura);
imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
if($datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);}
if($datos[2]==2){header("Content-type: image/jpeg");imagejpeg($thumb);}
if($datos[2]==3){header("Content-type: image/png");imagepng($thumb); }
imagedestroy($thumb);
?>Este es un codigo un poquillo complicadete... a decir verdad es muy complicado... voy a intentar explicarlo pero no se si lo are bien xD
$nombre=basename($_GET['imagen']);
$datos = getimagesize($nombre);Sacamos el nombre base del archivo
El nombre base de un archivo es el nombre en si, esa funcion lo que haces es que si tu pones:
?imagen=imagenes/mialbum/mifoto.jpg
Solo seleccionara "mifoto.jpg" para sacar el nombre de la imagen
Y Ademas calcura el peso de la imagen, devolviendo el ancho y alto de esta imagen y el tipo de archivo que es.
Creando una "array"
Asi pues, la variable $datos es una array, y estos son sus indices:
$datos[0] -> Contiene el ancho de la imagen
$datos[1] -> Contiene la altura de la imgen
$datos[2] -> Indica el tipo de imagen (1 = GIF, 2 = JPG, 3 = PNG...)
$datos[3] -> Texto con que contiene: "height="---" width="---"" para usarlo directamente en una etiqueta Img de html
if(!$_GET[anchura]) {
$anchura=500;
} else {
$anchura = $_GET[anchura];
}
if(!$_GET[hmax]) {
$hmax=375;
} else {
$hmax = $_GET[hmax];
}
if($datos[0] < $anchura) {
$anchura = $datos[0];
}
if($datos[1] < $hmax) {
$hmax = $datos[1];
}Traducido al español bonito:
Si no encuentra "anchura" con la global $_GET entonces añadimos una anchura por defecto, que es 500
Si no encuentra "hmax" (alto) con la global $_GET entonces añadimos una altura por defecto, que es 375
Si la anchura es menor que la anchura a la que queremos reducirla, la variable $anchura pasa a contener la anchura real de la imagen
Si la altura es menor que la altura a la que queremos reducir la imagen, la variable $hmax pasa a contener la altura real de la imagen
if($datos[2]==1){$img = @imagecreatefromgif($nombre);}
if($datos[2]==2){$img = @imagecreatefromjpeg($nombre);}
if($datos[2]==3){$img = @imagecreatefrompng($nombre);} Si el tipo de imagen es GIF (1) => $img contendra @imagecreatefromgif($nombre)
Si el tipo de imagen es JPEG (2) => $img contendra @imagecreatefromjpeg($nombre)
Si el tipo de imagen es PNG (3) => $img contendra @imagecreatefrompng($nombre)
La funcion "imagecreatefrom***" sirve para crear una imagen nueva desde un archivo o una URL (en este caso un archivo)
$ratio = ($datos[0] / $anchura);
$altura = ($datos[1] / $ratio); Simples calculos matematicos
$ratio es igual a la anchura dividido por la anchura que queremos que tenga la imagen
$altura es igual a altura dividido entre $ratio
if($altura>$hmax){$anchura2=$hmax*$anchura/$altura;$altura=$hmax;$anchura=$anchura2;}
$thumb = imagecreatetruecolor($anchura,$altura);
imagecopyresampled($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0], $datos[1]);
if($datos[2]==1){header("Content-type: image/gif"); imagegif($thumb);}
if($datos[2]==2){header("Content-type: image/jpeg");imagejpeg($thumb);}
if($datos[2]==3){header("Content-type: image/png");imagepng($thumb); } Mas calculos para determinar anchura y altura.
Crear imagen en color con la altura que queremos y la anchura que queremos
Y copiamos el contenido de nuestra imagen que queremos redimensionar, al archivo que hemos creado en la variable ($thumb)
Luego enviamos la imagen y lo mostramos con headers y todo xD.
La verdad es que es un codigo dificil de explicar y lo he hecho como he podido, porque ni yo lo entiendo del todo, bueno, vamos con el proceso practico.
Como usar el script redimensionar.php
[/b][/size]
Tenemos que tener en una carpeta lo siguiente:
- Imagen que queremos reducir
- Redimensionar.php
- Crear un nuevo archivo
Vamos con ese archivo.
Prueba.php
<?php
$img = ""; // NOMBRE DE LA IMAGEN A REDUCIR
echo '<img src="redimensionar.php?imagen='.$img.'&anchura=ESCRIBIR AQUI EL ANCHO&hmax=ESCRIBIR AQUI LA ALTURA">';
?>Eso es todo, si tienen dudas de este magnifico script solo pregunten y intentare resolverlo.
Saludos!!