usando los mismos métodos usados en mi tema anterior enviaré una captura de pantalla en el cliente para enviárselo al servidor.
Código
Capturar pantalla y enviarla:
Código: Seleccionar todo
try {
ServerSocket srvSock = new ServerSocket(1234);
sock = srvSock.accept();
dos = new DataOutputStream(sock.getOutputStream());
int quality = 100; //número del 1 al 100
Rectangle rectangleTam = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
Robot robot = new Robot();
BufferedImage bufferedImage = robot.createScreenCapture(rectangleTam);
int width = (bufferedImage.getWidth() / 100) * quality;
int height = (bufferedImage.getHeight() / 100) * quality;
Image imag = bufferedImage.getScaledInstance(width, height, 0);
BufferedImage buffered = new BufferedImage(width, height, Image.SCALE_REPLICATE);
buffered.getGraphics().drawImage(imag, 0, 0, null);
ByteArrayOutputStream salidaImagen = new ByteArrayOutputStream();
ImageIO.write(buffered, "jpg", salidaImagen);
byte[] bytesImagen = salidaImagen.toByteArray();
escribir(bytesImagen);
} catch (Exception ex) {
System.out.println("[main] Hubo un error: "+ex.getMessage());
}
Código: Seleccionar todo
try {
sock = new Socket("localhost", 1234);
dis = new DataInputStream(sock.getInputStream());
byte[] bytesImagen = leer();
ByteArrayInputStream entradaImagen = new ByteArrayInputStream(bytesImagen);;
BufferedImage bufferedImage = ImageIO.read(entradaImagen);
/* ESCALAR LA IMAGEN AL TAMAÑO DEL JLABEL */
Image img = new ImageIcon(bufferedImage).getImage();
Image newimg = img.getScaledInstance(jLabel1.getWidth(), jLabel1.getHeight(), java.awt.Image.SCALE_SMOOTH);
jLabel1.setIcon(new ImageIcon(newimg));
} catch (Exception ex) {
System.out.println("[main] Hubo un error: " + ex.getMessage());
}
Imagen: