Equivalencia en Javascript a la librería GD de PHP

No estoy muy seguro de que esto vaya aquí, pero como se trata de software libre, ahí va:

He desarrollado una página web que, entre otras cosas, incluye subida y manipulación de fotos (básicamente reducción de tamaño y peso) y para ello uso la librería GD de PHP. El problema viene dado por el límite de memoria que me han puesto los proveedores de hosting donde tengo alojada la web, ya que es de 40Mb y al abrir una imagen JPEG con una resolución de más de 2500x1875 usando la función imagecreatefromjpg() de la librería GD, ésta se descomprime (como es natural, ya que se trata de un jpg) y me da un error de falta de memoria debido al tamaño descomprimido de la imagen.

Estuve hablando con uno de los técnicos de mi proveedor de hosting y me dijo que el servicio que tengo contratado no permite más memoria que 40Mb, para tener más memoria tendría que contratar un servidor dedicado. La cuestión es que en la empresa de momento no podemos permitirnos el lujo de contratar un servidor dedicado y mis jefes creen que poniendo un límite de tamaño para la subida de fotos, van a haber muchos usuarios que no querrán subir fotos por lo que me dijeron que buscase un sistema que permita reducir el tamaño ANTES de subirla al servidor, ya sea mediante Javascript o Flash.

Yo pregunto: ¿existe realmente un script en Javascript o alguna utilidad Flash que redimensione la imagen y reduzca su peso del lado del cliente antes de mandarla al servidor? En otras palabras, ¿existe alguna librería javascript o similar que sea equivalente a GD y que funcione en el lado del cliente o me están pidiendo lo imposible?

NOTA: Descarto la posibilidad de usar controles ActiveX ya que esto sólo funcionaría en exploter y la página tiene que funcionar en cualquier navegador.

Gracias de antemano.
Pues hasta donde yo se, con javascript no puedes hacer eso que dices. Se pueden redimensionar las imágenes, pero sólo de la forma que las ves, es decir, que la imagen sigue guardando el mismo tamaño y la misma resolución, aunque se muestre con una resolución menor.

Con flash no tengo ni idea, tal vez puedas hacer un programa que copie la imagen que intentas redimensionar a la carpeta temporal del navegador del cliente, y que desde ahí el flash redimensione la imagen, aunque como te digo, no se si se puede hacer ni cómo.

Pero si encuentras una solución postéala por aquí que me interesa también.
La cuestión es que encontré una utilidad hecha en java para hacer esto, pero es necesario que el visitante tenga instalado el plugin para subir fotos y no es plan de marear mucho al usuario, ademas este cargador es de pago.

Seguiré investigando con lo de flash y cuando dé con la forma de hacer la subida con las fotos ya recortadas, lo postearé por aquí.

Saludos
http://www.pixastic.com/

Google: javascript image manipulation. IT WORKS!!
Sertinell escribió:http://www.pixastic.com/

Google: javascript image manipulation. IT WORKS!!


Hey, gracias por la respuesta, esto puede que me sirva. Mañana le echare un vistazo en el curro. Saludos :)

EDITO: Acabo de verlo a fondo y parece ser que funciona mediante HTML5 Canvas, que es algo que el desastroso internet exploter no soporta todavía (y vete tú a saber cuándo se incluirá soporte para HTML5 en exploter), por lo que me quedan las siguientes opciones:

1) Usar esa librería para navegadores que soporten HTML5 (todos los importantes menos el exploter) y usar controles ActiveX para exploter, lo cual me obigaría a adquirir algunos conocimientos de ActiveX y buscar alguna utilidad ActiveX para redimensionar imágenes.

2) Buscar alguna solución hecha en flash para redimensionar imágenes. Esto implica que debo adquirir conocimientos de flash que aún no tengo, ya que los diseños gráficos y las animaciones flash siempre me las hizo algún compañero diseñador.

3) Utilizar una aplicación java que encontré por ahí: Es de pago y me niego a hacer que la web requiera descargarse applets java, ya que la gran mayoría de usuarios sólo tienen instalado el reproductor flash en el navegador.

La primera opción sería para mí la más sencilla y rápida de implementar, si no fuera porque la mierda del exploter es incompatible con HTML5.

Aún así, creo que me acabaré decantando por hacer algo en flash, ya que a la larga la web irá cambiando gradualmente algunos de sus contenidos por otros hechos en flash y realmente este campo da mucho juego.
4 respuestas