dimensionar.php
Código PHP:
<?
include("form.php");//aquí incluímos un foreach para recibir las variables $_GET, $_POST o $_FILES, en este caso solo $_GET
$imagen = $_GET["imagen"];
$ancho = $_GET["ancho"];
$alto = $_GET["alto"];
$calidad = $_GET["calidad"]; //de 1 a 100
if(substr($imagen,-3) == "jpg" || substr($imagen,-3) == "JPG" || substr($imagen,-4) == "JPEG"){
$src_img = imagecreatefromjpeg($imagen);
}
elseif(substr($imagen,-3) == "gif" || substr($imagen,-3) == "GIF"){
$src_img = imagecreatefromgif($imagen);
}else{header("Location: $imagen");
}
$ancho_original = imagesx($src_img);
$alto_original = imagesy($src_img);
if(!$alto){
$alto = ($ancho / $ancho_original) * $alto_original;
}
if(!ancho){
$ancho = ($alto / $alto_original) * $ancho_original;
}
if(!$calidad){
$calidad = 80;
}
$dst_img = imagecreatetruecolor($ancho,$alto);
imagecopyresampled($dst_img, $src_img,0,0,0,0,$ancho,$alto,$ancho_original,$alto_original);
header("Content-Type: image/jpeg");
imagejpeg($dst_img,'',$calidad);
imagedestroy($src_img);
imagedestroy($dst_img);
?>
Y a la imagen la llamamos así:
Código PHP:
<img src="http://localhost/misitio/dimensionar.php?imagen=<?=$row['img1'];?>&ancho=300&calidad=80" border="0">
ahora se tendría q ver!!
Donde
$row['img1'], es una consulta a la DB donde esta guardado el path hacia la imagen. No es necesario hacerlo así, puedes utilizar algo así para explorar la carpeta donde guardas tus imgs. Demás, creo, esta mencionar q las variables q les pasas a dimensionar.php es para determinar el ancho de la img y automáticamente calcula el alto (también puedes pasarselo, pero distorsionaría la img). La otra variable es la calidad de img.
Código PHP:
$carpeta = $_SERVER['DOCUMENT_ROOT']."/mis_imagenes/"; //puedes utilizar $_SERVER['SCRIPT_FILENAME'] y dirname si guardas el archivo en la misma carpeta donde estan las imgs
$abrir = opendir($carpeta);
static $imgs = array();
while($archivo = readdir($abrir)){
if($archivo == '.' || $archivo == '..' || is_dir($carpeta.$archivo){
continue;
}else{
$imgs[] = $archivo;
}
closedir($abrir);
Saludos cuidate