Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/08/2012, 11:16
CbooT
 
Fecha de Ingreso: agosto-2012
Ubicación: España
Mensajes: 6
Antigüedad: 12 años, 3 meses
Puntos: 0
Pregunta Comprimir datos al vuelo para enviarlos por un socket

Hola a todos:

Estoy con un programita y necesito enviar BufferedImages(Son capturas de pantalla) por un socket, hasta ahí todo bien, está hecho y funciona (BufferedImage no es serializable por lo tanto lo que envío realmente es un ImageIcon que si implementa la interfaz).
El problema es que una BufferedImage(o imageIcon) no es más que un BMP que ocupa demasiado en memoria, y por lo tanto, tarda demasiado en enviarse por la red. Mi problema actual es ese. Necesito transformar una BufferedImage a un array de ints (esto es sencillo, crear un array de int[ancho * alto] y meterle los pixels) para luego conseguir aplicar la función de compresión, pero es ahí donde no consigo que la cosa marche, conseguir plantar el DeflaterOutputStream en mi ObjectOutputStream y mandarlo no me funciona...

Me sirve o bien comprimir el array en memoria y luego meterlo por el objectoutputstream o comprimirlo al vuelo directamente con el deflater, me da exactamente igual porque mi problema actual es de red, no de tiempo de procesamiento.

Digamos que tengo las siguientes variables:

BufferedImage imagen;
ObjectOutputStream salida;

A ver quién se inventa algo para que entre la imagen por el socket :D

Gracias!

No se si me he explicado