Lenguaje PHP

Redimensionar imagen con PHP: Ejemplo completo

Redimensionar imagen con PHP. Hoy en día lo primordial es la velocidad de un portal web o sistema web. Por lo tanto, las imágenes deben estar bien optimizadas y estas a su vez deben respetar algún tamaño específico. En este articulo aprenderemos a redimensionar imagen con PHP, algo practico y sencillo para que puedas implementarlo rápidamente y no rendirte en el intento.

En ocasiones desarrollamos sistemas que permitan subir imágenes ya sean para un producto, categoría o quizás para algún articulo periodístico, etc. El primer punto es, que el sistema tenga la posibilidad de optimizar estas imágenes a un tamaño preciso.

REDIMENSIONAR IMAGEN CON PHP: DOS FORMAS

Redimensionar imagen con PHP Ejemplo completo
Redimensionar imagen con PHP Ejemplo completo

Recordemos que los usuarios subirán cualquier tamaño de imagen sin importar las recomendaciones dadas por los administradores. En ese momento, entra a tallar el sistema desarrollado.

¿Qué problemas encuentras los sistemas a la hora de subir imágenes?

Según estudios y análisis, el problema más común en estas situaciones es que al final tendremos almacenadas miles de imágenes con proporciones y tamaños fuera de rango, esta a su vez genera lentitud de carga en nuestro sistema y/o página web por las imágenes muy pesadas.

A continuación, brindaremos dos formas para poder redimensionar una imagen.

a) Primera Forma: Usando Clase PHP

Este va a ser nuestra primera opción y vamos a subir una imagen al servidor y posteriormente redimensionar al 50% el tamaño original de la imagen subida. Para este ejemplo no usaremos base de datos.

Además, usaremos la librería class.upload.php para redimensionar las imágenes subidas al servidor.

¿Qué recursos necesito para este ejemplo?

Necesitaremos 3 recursos y son los siguientes:

  • Un Formulario para subir imágenes
  • Fichero upload.php. – Para el procesamiento de imágenes
  • Uso de la Librería class.upload.php
Estructura de archivos redimensionar imagen
Estructura de archivos redimensionar imagen

¿Como instalar el Script?

Para instalar y ejecutar el script solo debemos de subir los archivos al servidor web y ejecutarlo. Sin embargo, es posible que este limitado a 2MB la subida de imágenes, por consiguiente, ustedes pueden modificarlo vía el fichero php.ini o si están usando un hosting compartido podrían usar el (.user.ini), caso contrario vía el fichero .htaccess también pueden incrementar el tamaño de subida.

ESTRUCTURA DEL SCRIPT

1) Index.php: Subir ficheros

Su función será de mostrar un formulario HTML5 y enviar la imagen al fichero upload.php que se encargará de procesarlo.

Formulario
Formulario

2) Fichero upload.php

Este fichero cumple un rol fundamental en el ejemplo:

  • Sera el encargado de llamar a la librería
  • Subir las imágenes al servidor
  • Redimensionar las imágenes subidas a través de la clase upload
<?php
include "class.upload.php";

if(isset($_FILES["image"])){
$up = new Upload($_FILES["image"]);
$correct= false;
if($up->uploaded){
$up->Process("uploads/");
if($up->processed){
$up->image_resize = true;
$up->image_x = $up->image_src_x/2;
$up->image_ratio_y = true;
$up->jpeg_quality = 50;

$up->Process("uploads2/");
if($up->processed){
$correct = true;
}
}
}
}
?>

Resultado en el navegador

Resultados de la redimensión de imagen

b) Segunda Forma: Usando PHP IMAGICK

En esta segunda forma tenemos que asegurarnos que nuestra versión de PHP Posea la librería ImageMagick. Ya que, sin este componente no funcionara el ejemplo.

Redimensionar con imagepick
Redimensionar con imagepick

Redimensionar una imagen con PHP sin perder calidad

La calidad de la imagen es algo fundamental en todo proyecto web y redimensionar también. Sin embargo, en este ejemplo explicaremos como redimensionar una imagen con PHP sin perder calidad.

Vamos a explicar la manera correcta de redimensionar una imagen con ayuda del lenguaje PHP, con solo algunas líneas de código. Además, lo más importante que la imagen no sea PIXELADA.

¿Como lograremos redimensionar sin perder la calidad?

El primer paso es usar la Librería de PHP IMAGICK (Image magic), la cual viene incluida en el propio PHP a partir de la versión 5.1.3 o superior.

Como segundo paso debemos asegurarnos que nuestro servidor donde tengamos almacenada la web tenga esta librería activada. Por lo tanto, muchos servidores locales no la traen y esto provoca errores cuando ejecutamos la redimensión.

¿Cuáles son los requisitos para que este script funcione muy bien?

Antes de seguir con el proceso de redimensión es que la imagen que deseamos procesar debe estar en nuestro servidor web, previamente subida. Sin embargo, esto lo podemos solucionar subiendo el fichero al servidor mediante un formulario y PHP.

Códigos del ejemplo

<?php

// Creamos la variable que contiene la imagen
// Uso de la librería imagick
$im = new imagick("01.jpg");
$imageprops = $im->getImageGeometry();
// reconocimiento de la altura y ancho de la imagen
$width = $imageprops['width'];
$height = $imageprops['height'];
// Nueva altura y ancho
if($width > $height){
$newHeight = 280;
$newWidth = (280 / $height) * $width;
}else{
$newWidth = 280;
$newHeight = (280 / $width) * $height;
}
$im->resizeImage($newWidth,$newHeight, imagick::FILTER_LANCZOS, 0.9, true);
$im->cropImage (280,280,0,0);
// Escribimos la nueva imagen redimensionada
$im->writeImage( "01_280x280_test.jpg" );
// Impresion en el navegador de la imagen
echo '<img src="01_280x280_test.jpg">';
?>

Vista previa del resultado

Redimesionar imagen php
Redimesionar imagen php

CONCLUSIÓN: Redimensionar imagen con PHP

En este articulo hemos explicado dos formas para procesar imagen y obtener una redimensión acorde con las necesidades de nuestro proyecto.

La primera opción fue reducir al 50% la imagen, recordemos que los usuarios suelen subir imagen de 4500×3500 o superior lo que ocasiona el alto consumo de ancho de banda y lentitud a la hora de cargar una página web.

Por otro lado, la opción dos fue usando una librería imagick, si nuestro hosting no tiene activada, debemos de solicitarlo mediante ticket de soporte, caso contrario si estas en un servidor local, puedes instalarlo tú mismo.

Espero que esta breve explicación les ayude en sus proyectos web.

 

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

5 comentarios

  1. Hola Nestor, como va ?
    Estoy tratando de armar lo siguiente:
    Tengo un formulario para subir una foto a un database.
    Le quiero agregar la opcion de poner 2 campos para especificar si quiero redimensionar la foto manteniendo la proporcion
    ancho [ ] o alto [ ] completo una de las 2 dimensiones, la foto se redimensiona y se guarda en el campo longblob deseado
    El tema es que los ejemplo que encontre para redimensionar lo hacen desde un archivo con la ruta o directorio.
    Cuando recibo la foto del campo tipo file y la quiero redimensionar asignandola a una variable, la pierdo.
    Tendras algun ejemplo ? gracias

  2. saludos muy buen aporte pero tengo una duda si lo que quisiera es dimensional en un tamaño especifico y no por porcentaje como debería hacerlo?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba