He desarrollado una aplicación que captura la pantalla de un PC y mediante sockets la envía a un segundo ordenador.
La aplicación en sí funciona perfectamente. A través de los sockets envío como cadena de bytes la imagen capturada y en el receptor recompongo esa información para mostrarla por la pantalla.
El problema es el siguiente, en 1080x1920 la pantalla consta de 2073600 pixeles. Estos pixeles se encuentran dentro de un objeto BufferedImage y los convierto en un array de enteros de 4 bytes de tamaño 2073600.
Una vez obtengo el array de enteros transformo cada entero en 4 bytes, añadiendolo finalmente a un array de tamaño 2073600*4 para enviarlo por el socket.
Total que al final me encuentro con un array de 8MB para enviar por el socket.
Entonces mi pregunta es obvia, ¿como hago para reducir ese tamaño tan exagerado a algo más asequible como por ejemplo 500 kb.