Ir al contenido principal

Una web de compresión de imágenes con Javascript

compressor geeky theory lenna
Siempre me ha gustado el tema de la compresión de datos. En mi Trabajo de Fin de Grado realicé la implementación de un algoritmo de compresión de imágenes sobre Android y me encantó hacerlo. Por otra parte, como muchos de vosotros sabéis en Geeky Theory siempre nos gusta hacer proyectos pequeños y no tan pequeños para luego publicarlos aquí y que todos podamos aprender de ellos y mejorarlos. Siempre se puede mejorar.
En cualquier blog es muy importante el tiempo de carga y la optimización de los recursos, como por ejemplo de imágenes. Debido a esto me propuse realizar unapágina web en la que pudiera comprimir las imágenes a mi gusto, pero con una condición: que la compresión la realizara el cliente y las imágenes no pasaran por ningún servidor. La compresión por parte del cliente se realizaría con códigoJavascript y no habría código backend de ningún tipo, ahorrando así el máximo de recursos.

Requisitos

La página web debía cumplir los siguientes requisitos:
  • Compresión de datos en el cliente.
  • El usuario debe poder fijar la calidad de la imagen.
  • El usuario debe poder comparar la imagen comprimida con la original.
  • El usuario debe poder descargar la imagen comprimida.
Una vez establecidos los requisitos, era hora de ponerse a trabajar.

Librerías utilizadas

Si hay algo que tiene Javascript son librerías. Gracias a esto agilicé mucho el desarrollo porque ya había bastantes cosas hechas, pero yo quería unirlas todas para hacer una página decente.
jRange
La librería jRange la he utilizado para implementar el selector de la calidad de la imagen. Es muy fácil de utilizar y yo le he hecho unas cuantas modificaciones, sobre todo de diseño, para que cuadrara con el aspecto de la página.
Imagen Comparison Slider
Esta librería la he utilizado para comparar la imagen comprimida con la original.
J-I-C (Javascript Image Compressor)
He utilizado esta librería porque ya estaba hecha y tampoco es necesario reinventar la rueda. Su función es la de comprimir las imágenes y la verdad es que son muy pocas líneas de código nada complicadas. En un futuro la quitaré para cambiarla por otra que implemente yo y tener una dependencia menos.

Cosas que faltan por implementar

Hay una buena lista de cosas que quiero añadir a la web:
  • Compresión PNG: ahora mismo se pueden cargar archivos PNG, pero la librería J-I-C realiza mal la compresión. Se arreglará cuando implemente la mía propia.
  • Mostrar los resultados de la compresión: ahora mismo no se ven en la propia página los datos resultantes de la compresión y únicamente se pueden comprobar al descargar la imagen y ver su peso. Esto es muy importante y será el siguiente paso.
  • Menú: un pequeño menú para navegar entre páginas.

 Colaborar con el proyecto

El código del proyecto está publicado en Github y sois libres de colaborar y ayudarme a desarrollarlo. Tardé unas pocas horas en hacer lo que está ahora, así que lo que está en la lista de TO-DO no debería ser muy complicado.

Comentarios

Entradas más populares de este blog

10 excelentes webs para aprender nuevos idiomas gratis

¿Te gustaría aprender un nuevo idioma? Ahora no tienes que invertir tanto tiempo y dinero, con estas webs para aprender idiomas ya no hay pretexto. Luis Molinero | Shutterstock Actualmente,  hablar más de un  idioma  no es un lujo, es una necesidad . Las exigencias globales del mundo en el que vivimos requieren de nuevas competencias de comunicación y por ello, es fundamental que las personas podamos comunicarnos en más de un idioma. Por ejemplo,  el inglés, aunque no es el idioma más hablado, es considerado el idioma universal , razón por la cual, muchas veces, se da por sentado que todos lo conocemos, lo que puede hacernos pasar más de alguna vergüenza. Entre los  hispanohablantes , aprender inglés no era una tarea sencilla, quizás por la cuestión de la pronunciación, pero hoy ya no tiene porque ser así. Y es que aprender un nuevo idioma nos abre las puertas a nuevos mundos, a nuevas oportunidades de empleo y a nuevas relaciones personales. Si esto ...

7 aplicaciones para gestionar proyectos de forma eficiente

¿Estás trabajando en equipo pero todo es un caos? entonces deberías probar estas aplicaciones para gestionar proyectos que te ayudarán a organizarlo todo. Shutterstock Sin duda  trabajar en equipo  es una tarea que generalmente se nos complica debido a problemas de comunicación, sincronización de tiempos, bajo presupuesto o falta de organización, lo que repercute en el resultado final o en la calidad del trabajo realizado. Afortunadamente ya no tiene que ser así. La tecnología ha permitido que hoy en día tengamos muchas herramientas digitales de donde escoger. Éstas nos permiten estar a cargo de tareas y administrar nuestro tiempo para  trabajar con otras personas sin necesidad de estar físicamente en un lugar . A este tipo de herramientas se le conoce como  aplicaciones de gestión de proyectos  y hoy te traemos las mejores opciones que existen para que puedas empezar a organizar tus tareas. Trello Trello  es la aplicación por defecto...

CREANDO UN SERVIDOR MULTIMEDIA CON PLEX

En esta ocasión, crearemos un  servidor multimedia  que nos permitirá tener acceso a todas nuestras películas, series, canciones, fotos y vídeos almacenados en nuestro PC desde diferentes dispositivos como nuestro teléfono Android o iPhone, otro PC o incluso desde nuestro Smart TV, todo esto, lo haremos con una herramienta llamada  PLEX . Primero, hay que tener un poco ordenado nuestro contenido, en mi caso, haré el servidor con películas. En una carpeta pondré todas las películas que quiero que sean añadidas al servidor. Hecho esto, hay que ir a la pagina de  Plex  y damos clic en  computer   para descargar  la aplicación que nos permitirá crear nuestro servidor multimedia, una vez instalada, buscamos la aplicación y la abrimos. Se abrirá una nueva pestaña en el navegador como la que mostramos a continuación. Ahora procederemos a configurar las bibliotecas para que sincronice nuestro contenido multimedia. Hacemos clic en el ...