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

Sailfish OS certificado como alternativa a Android en Rusia

Los finlandeses de  Jolla  están de enhorabuena, especialmente si recordamos que no hace mucho estaban casi en la bancarrota, tras embarcarse en una aventura algo arriesgada para la fabricación de tablets. Ahora la vida les sonríe: las autoridades rusas  han certificado  el  sistema operativo Sailfish OS  para su uso por parte del gobierno y corporaciones del país. Se trata de un sistema con base open source ( Linux ), pero con una  capa privativa  presente en algunos de sus componentes como puede ser la interfaz o determinadas aplicaciones. La gran ventaja de Sailfish respecto a otros competidores en el mercado del smartphone –como el ya desaparecido  Firefox OS  o  Ubuntu –, es su  compatibilidad con las aplicaciones de Android. Las intenciones de Rusia es  reducir el uso de sistemas operativos extranjeros  (Android, iOS) en móviles del 95% actual  a la mitad en 2025 . Disminuir la  dependen...

3 tácticas para gestionar el tiempo que te ayudarán a aumentar tu productividad

Uno de los grandes problemas que tenemos y del que no siempre somos conscientes los profesionales de marketing online es que  necesitamos pautas para gestionar nuestro tiempo y ser más eficientes . De nada sirve ocupar buena parte de tu jornada leyendo las últimas novedades y actualizaciones si no te queda tiempo para ponerlas en práctica. Trabajar con información no es fácil Hoy me gustaría explicarte  3 reglas de oro  que te ayudarán a ser mucho más productivo en todo lo que hagas y a  eliminar bloqueos mentales , que muchas veces es el  verdadero problema encubierto de la gestión del tiempo . # 1. Simplifica Simplificar es una cuestión de prioridades . ¿Cuántas horas pasas delante del ordenador atendiendo las tareas menos importantes mientras las importantes las retrasas un día tras otro hasta que dejan de serlo? Por ejemplo, te conectas a Facebook o Twitter en cuanto recibes una notificación, respondes al email que acaba de llegar, buscas conten...

Iproute2 la Sustitución completa de ifconfig

Adios net-tools, Bienvenido iproute2 Un poco de historia El aprender del pasado, nos prepara para el futuro La mayoría de las distribuciones de Linux, y la mayoría de los UNIX, usan todavía algunas de ellas las venerables órdenes arp, ifconfig y route. Aunque funcionan, muestran cierto comportamiento inesperado a partir de Linux 2.2. Por ejemplo, los túneles GRE son parte integral del enrutado hoy día, pero precisan herramientas completamente diferentes. Los núcleos Linux 2.2 y superiores incluyen un subsistema de red completamente rediseñado. Este nuevo código de red proporciona a Linux un rendimiento y características con poca competencia en el panorama general de los SO. En realidad, el nuevo código de enrutado, filtrado y clasificación tiene más posibilidades que el que proporcionan muchos enrutadores y cortafuegos dedicados y productos de control de trafico. Actualmente las principales distribuciones de Linux, han sustituido la instalación predeterminada de estas aplicacio...