01/08/2012, 11:16
|
| | Fecha de Ingreso: agosto-2012 Ubicación: España
Mensajes: 6
Antigüedad: 12 años, 3 meses Puntos: 0 | |
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 |