Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Escalar y reducir tamaño de imágenes con php

Vamos a ver un ejemplo completo de como escalar y reducir tamaño de imágenes con php, muy útil para reducir el tamaño y el peso de las imágenes que suben a nuestro servidor sin perder demasiada calidad y optimizarlas.

Ejemplo comentado, listo para copiar y probar:
<?php 

//BASADO EN JPEG, PARA USAR EN PNG, GIF ETC CAMBIAR EL NOMBRE DE LAS FUNCIONES

if (isset($_FILES['imagen1']) && $_FILES['imagen1']['tmp_name']!=''){

//Imagen original
$rtOriginal=$_FILES['imagen1']['tmp_name'];

//Crear variable
$original = imagecreatefromjpeg($rtOriginal);

//Ancho y alto máximo
$max_ancho = 600; $max_alto = 400;
 
//Medir la imagen
list($ancho,$alto)=getimagesize($rtOriginal);

//Ratio
$x_ratio = $max_ancho / $ancho;
$y_ratio = $max_alto / $alto;

//Proporciones
if(($ancho <= $max_ancho) && ($alto <= $max_alto) ){
    $ancho_final = $ancho;
    $alto_final = $alto;
}
else if(($x_ratio * $alto) < $max_alto){
    $alto_final = ceil($x_ratio * $alto);
    $ancho_final = $max_ancho;
}
else {
    $ancho_final = ceil($y_ratio * $ancho);
    $alto_final = $max_alto;
}

//Crear un lienzo
$lienzo=imagecreatetruecolor($ancho_final,$alto_final); 

//Copiar original en lienzo
imagecopyresampled($lienzo,$original,0,0,0,0,$ancho_final, $alto_final,$ancho,$alto);
 
//Destruir la original
imagedestroy($original);

//Crear la imagen y guardar en directorio upload/
imagejpeg($lienzo,"upload/".$_FILES['imagen1']['name']);

}

?>
 <form action="" method="post" enctype="multipart/form-data">
 	<input type="file" name="imagen1">
 	<input type="submit" value="Subir">
 </form>
cualquier duda dejen un comentario!
Editado
1
Puntos
5998
Visitas
0
Resp
Por alber hace 33 meses
Administrador
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate