Optimizar imágenes con PHP subidas desde un formulario

Optimizar imágenes con PHP subidas desde un formulario

Muchas veces al desarrollar un proyecto con tratamiento de imágenes un punto a tocar es el tema del peso de las imágenes, sobre todo si el usuario es quien las sube al servidor, hoy vamos a hablar sobre como optimizar imágenes con PHP subidas desde un formulario HTML.

En nuestro caso, hemos desarrollado un directorio en Internet en el que el usuario puede subir imagenes de Galeria para su empresa, este mismo proyecto me sirvio para hacer un post sobre como hacer una paginación básica con PHP.

Como te podrás imaginar el usuario sube imagenes de 5000 x 3000 de 6 MB!

Esto no es tanto un error del usuario sino del programador si no lo prevee, es necesario realizar un ajuste al sistema para bien o limitar el tamaño de subida o bien optimizar el peso de la imágen seleccionada por el usuario.


¿Sabías que?

¿Necesitas hosting wordpress? WebEmpresa te ofrece un servicio super rápido, excelente soporte en español y certificado SSL gratuito:

WebEmpresa

En este caso nos vamos a ir por la opción de optimizar imágenes con PHP subidas desde un formulario HTML común y corriente.

HTML y el formulario

Nuestro formulario HTML es un formulario común y corriente como cualquier otro:

<form action="guardarImagen.php" method="post" enctype="multipart/form-data">
  <ul>
      <li>
          <label>Elegir Imágen:</label>
          <input type="file" name="imagen" id="imagen"/>
      </li>
      <li>
          <input type="submit" name="submit" id="submit" />
      </li>
  </ul>
</form>

Ya teniendo el escenario vamos a la función para optimizar imagenes con PHP que nos interesa.

Función para optimizar imagenes con php

En nuestro archivo guardarImagen.php donde recibimos la información con POST definimos la función optimizar_imagen tal como sigue.

function optimizar_imagen($origen, $destino, $calidad) {

      $info = getimagesize($origen);

      if ($info['mime'] == 'image/jpeg'){
	    $imagen = imagecreatefromjpeg($origen);
      }

	  else if ($info['mime'] == 'image/gif'){
	    $imagen = imagecreatefromgif($origen);
	  }

	  else if ($info['mime'] == 'image/png'){
	    $imagen = imagecreatefrompng($origen);
	  }

	  imagejpeg($imagen, $destino, $calidad);
	  
	  return $destino;
	  
}

La mandamos llamar asi:

$imagen = optimizar_imagen( $_FILES['imagen']['tmp_name'], $destino, 40 );

Con esto indicamos el archivo de imágen, la ruta donde deberá guardarse y la calidad de la imágen deseada, entre menor sea este valor mayor será comprimida la imágen.

Con esto podemos reducir considerablemente el tamaño de las imagenes que el usuario sube a nuestro sistema con lo cual evitamos quedarnos sin espacio en poco tiempo y aceleramos la velocidad de carga de nuestro sistema.

Si este pequeño post te fue de utilidad no olvides compartirlo en tus redes sociales o dejarnos un comentario en la sección de abajo, con gusto te aclaro cualquier duda respecto a la función.

Hasta luego!

Clic para valorar esta información
[Total: 1 Promedio: 5]