Emisor
Este código recupera una captura de pantalla que transforma a int[] para enviarla por el socket.
Código
v = new int[ancho*alto]; dataBuffer = robot.createScreenCapture(rectangulo).getData().getDataBuffer(); //Captura la pantalla for(int i = 0; i < ancho*alto; i++) v[i] = dataBuffer.getElem(i);
Receptor
Se encarga de recibir el int[] y recomponerlo.
Código
// Creo un ByteBuffer donde añado v (byte[]) // v es el int[] que envié y que recibo en forma de 4 bytes por int. ByteBuffer bb = ByteBuffer.allocate(v.length); bb.put(v); bb.order(ByteOrder.BIG_ENDIAN); bb.rewind(); // Ahora transformo ese ByteBuffer en un IntBuffer IntBuffer ib = bb.asIntBuffer(); int[] result = new int[v.length / 4]; ib.get(result); BufferdedImage imagen = generarBufferedImage(result); //este método está implementando en el código de abajo.
Y con este último código copiado de internet y que no comprendo muy bien recupero el BufferedImage inicial
Código
{ int[] BM = new int[] { 0xff0000, 0xff00, 0xff }; SinglePixelPackedSampleModel SM = new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT, resolucion.getAncho(), resolucion.getAlto(), BM); // creating the raster BufferedImage bi = new BufferedImage(resolucion.getAncho(), resolucion.getAlto(), BufferedImage.TYPE_INT_RGB); return BI; }