Upload y redimensionar imagenes con PHP
Saludos de nuevo, bueno en esta oportunidad presentare un codigo que acabo de utilizar y desarrollar para una pequeña web y que la publicare.
Este script nos permite subir una imagen al servidor y luego crear una imagen en miniatura utilizando php.
form.html
<form action="upload.php" name="upload" enctype="multipart/form-data" method="post"> Imagen:<br /> <input id="archivo" name="archivo" size="30" type="file" /><br /> <input name="submit" type="submit" value="Guardar" /> </form>
upload.php
<?php
class upload_imagen
{
function thumbnail()
{
$tamano = $_FILES["archivo"]['size'];
$tipo = $_FILES["archivo"]['type'];
$archivo_original = $_FILES["archivo"]['name'];
$prefijo = substr(md5(uniqid(rand())),0,6);
if ($tipo == "image/jpeg" || $tipo == "image/jpg" || $tipo == "image/png" || $tipo == "image/gif")
{
$destino = "fotos/".$prefijo."_".$archivo_original;
copy($_FILES['archivo']['tmp_name'],$destino);
$tamano_m = 100;
$destino_mn = "fotos/thumb/thumb_";
$imgv = explode('/', $destino);
$sup = $imgv[0]."//".$imgv[2];
$resultado = array_pop($imgv);
$ext = explode('.', $destino);
list ($ancho, $alto) = getimagesize($destino);
if ($ancho>$alto) {
$new_alto = $tamano_m;
$new_ancho = ($ancho/$alto)*$new_alto;
$x = ($ancho-$alto)/2;
$y = 0;
$origen = imagecreatefromjpeg($destino);
$temp = imagecreatetruecolor($tamano_m, $tamano_m);
imagecopyresampled($temp, $origen, 0, 0, $x, $y, $new_ancho, $new_alto, $ancho, $alto);
imagejpeg($temp, $destino_mn.$resultado, 90);
imagedestroy($temp);
imagedestroy($origen);
}
else
{
$new_ancho = $tamano_m;
$new_alto = ($alto/$ancho)*$new_ancho;
$y = ($alto-$ancho)/2;
$x = 0;
$origen = imagecreatefromjpeg($destino);
$temp = imagecreatetruecolor($tamano_m, $tamano_m);
imagecopyresampled($temp, $origen, 0, 0, $x, $y, $new_ancho, $new_alto, $ancho, $alto);
imagejpeg($temp, $destino_mn.$resultado, 90);
imagedestroy($temp);
imagedestroy($origen);
}
echo "<img src=\"".$destino."\" /><br />";
echo "<img src=\"".$destino_mn.$resultado."\" />";
}
else
{
echo "Solo se admiten imagenes en .jpg - .png - .gif - .jpeg";
echo $_FILES["archivo"]["tmp_name"];
exit;
}
}
}
$subirdatos = new upload_imagen();
$subirdatos->thumbnail();
?>
Nota: Para no tener problemas debemos tener creadas las carpetas
fotos/thumb/ y fotos/. Por que sino saldra un error.
