Optimizar Imágenes en Codeigniter con la API de Imagify.io

Si buscas como optimizar imágenes en Codeigniter , estas en el lugar correcto. En este tutorial lo que haremos será comprimir y redimensionar imágenes manteniendo su calidad, por medio de la API de Imagify.io y su librería PHP adaptada a Codeigniter.

Conociendo Imagify.io para Optimizar imágenes

Lo primero que vamos a conocer será la aplicación web Imagify.io, pues será su API disponible en un Webservice, que hará todo el proceso de optimizar imágenes.

Imagify.io es una aplicación online para optimizar y redimensionar imágenes. Dispone de una API en un Webservice REST seguro (https). Cuenta con planes pagos y un PLAN GRATUITO, con las siguientes características:

  • De forma gratuita puedes únicamente procesar un máximo de 25MB por mes.
  • La API no hace recortes (cropping) a la imagen.

El redimensionado puede ser proporcional o con dimensiones exactas.

Sabiendo esto, tendríamos que tener una estrategia que permita aprovechar las ventajas de esta API.

Integrar en nuestra aplicación

Para integrar en nuestra aplicación PHP Codeigniter seguiremos los siguientes pasos:

1. Obtener la API KEY de Imagify.io

Crearemos una cuenta gratuita en Imagiy.io  y luego de acceder al panel de usuario, entramos a API INTEGRATION (menú superior)

optimizar imágenes en codeigniter

Copiamos la Key API de la caja de texto “Access Token” y será ese código que usaremos en nuestro código fuente más adelante.

2. Librería para optimizar imágenes en Codeigniter

Imagify.io dispone también de una clase en PHP. Por medio del concepto de herencia fue implementada una clase adaptada para Codeigniter.

La clase adaptada para Codeigniter está disponible en GitHub.

  • Copiamos la clase oficial de Imagify.io para PHP y la llevamos a application/third_party
  • Copiamos todo el directorio de la clase adaptada para Codeigniter y la llevamos a application/libraries
  • Para utilizar la API, tenemos que definir una constante con la Key API de Imagify.io, entraremos al archivo Imagify.php y definir la constante de la clase llamada KEY_API

3. Controller que hará el proceso de Optimizar imágenes

Ahora que tenemos todo listo, solo nos falta ejecutar un script y optimizar imágenes con la librería. Como ejemplo crearemos un método dentro de un controller.

Ahora la explicación del código línea por línea:

  • Línea 5: Cargamos la librería
  • Línea 6: definimos la variable $path para la ruta del archivo.
  • Línea 7: Definimos los valores para las opciones disponibles de la API. Para este ejemplo, se hace el redimensionado (“resize”), a 300 pixeles de ancho(width), y al no indicar un valor para la altura, el redimensionado será proporcional a la anchura.
  • Línea 8: En esta línea se ejecuta el proceso principal.
  • Línea 9: Verificamos si el proceso fue ejecutado correctamente.
  • Línea 11: Asignamos a una variable, los datos binarios del archivo procesado.
  • Línea 12: Creamos un archivo llamado imagen_optimizada.jpg en la misma ruta del archivo original.
  • Línea 13: Luego de crear el archivo, mostramos un mensaje.
  • Línea 16: En caso de algún error en el proceso, mostramos el mensaje de error recibido de la API.

Ejecutando el script tenemos los siguientes resultados:

resultado de optimizar imágenes en codeigniter

Dimensión original: 620 x 388px
Tamaño original: 47,8KB

Con la API (Imagify.io):

Dimensión final: 300 x 187px
Tamaño final: 9,57KB

Sin la API (con la librería propia de Codeigniter)

Dimensión final: 300 x 187px
Tamaño final: 15,2 KB

Diferencia: 5,63KB

Documentación de la API

Podemos encontrar la documentación completa en: https://imagify.io/docs/api/ De todas formas aquí te traigo todas las opciones en español.

Request: POST https://app.imagify.io/api/upload

Entrada (Parámetros de la Query)

  • Parámetro: image
    Tipo: binary data
    Descripción: El archivo en formato binario
  • Parámetro: data
    Tipo: json
    Descripción: Parametros de optimización en format JSON

Salida (Response)

Se recibe la respuesta en formato JSON:

Parámetros disponibles en la librería PHP y Codeigniter

Para optimizar imágenes en Codeigniter, se dispone desde la librería PHP los siguientes parámetros:

  • Parámetro: normal
    Tipo: bool
    Default: false
    Descripción: Optimización con algoritmo losseless (menos perdida de datos)
  • Parámetro: aggressive
    Tipo: bool
    Default: true
    Descripción: Optimización con algoritmo Agressive (mayor compresión y se pierde algo de calidad)
  • Parámetro: ultra
    Tipo: bool
    Default: false
    Descripción: Optimización con algoritmo Ultra
  • Parámetro: keep_exif
    Tipo: bool
    Default: false
    Descripción: Permite preservar los meta-datos de la imagen (EXIF). Solo se aplica en caso que la imagen sea optimizada sin redimensionar
  • Parámetro: resize
    Tipo: bool
    Default: false
    Descripción: Array con parámetros de redimensión
  • Parámetro: resize[“width”]
    Tipo: int
    Default: 0
    Descripción: Anchura de la imagen para ser redimensionada
  • Parámetro: resize[“height”]
    Tipo: int
    Default: 0
    Descripción: Altura de la imagen para ser redimensionada
  • Parámetro: resize[“percentage”]
    Tipo: int
    Default: 0
    Descripción: Porcentaje de redimensión. El redimensionado será conforme el porcentaje, manteniendo proporciones de anchura y altura.

Como respuesta en PHP se recibe un objeto, tal como fue explicado en el código fuente.

Conclusión

Y de esa forma vimos lo básico para optimizar imágenes en Codeigniter. La solución implementada, deberá ser ampliado para permitir otras operaciones. Por ejemplo, si juntamos esta librería que acabamos de ver, con la librería propia de Codeigniter tendremos una solución más completa. Otra cosa importante de mencionar, es que al encontrarse en desarrollo Codeigniter 4, posiblemente reformulemos esta solución a una forma mas simplificada.

Existen otras alternativas que no requieran el uso de APIs externas, sin embargo estas soluciones requieren de recursos que no están disponibles en la mayoria de hosting compartidos. Esta solución es apropiada para casos donde el hosting de la aplicación, sea un hosting compartido.

Cual fue tu experiencia con el tratamiento de imagenes con PHP? Conoces alguna otra solución para optimizar imágenes desde Codeigniter?. Escribeme en los comentários y continuamos con más novedades en los siguientes posts.

 

Escribir un comentario

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