Java Corrupt JPEG data … envoi image Client-Serveur-Client

Mon erreur lors de l’envoi d’une image Client-Serveur-Client est “Données JPEG corrompues: 4350674 octets externes avant le marqueur 0xd9” Qu’est-ce que je peux changer? Voici mon code:

SERVEUR

InputStream is = klienciRemoteScreen[1].getInputStream(); OutputStream os = klienciRemoteScreen[0].getOutputStream(); byte[] bytesize = new byte[4]; is.read(bytesize); int size = ByteBuffer.wrap(bytesize).asIntBuffer().get(); byte [] image= new byte [size]; byte[]bufferimage = new byte [1]; os.write(bytesize); os.flush(); int count; while((count = is.read(image)) > 0) { os.write(image); os.flush(); } os.close(); 

CLIENT envoyant l’image au serveur

 OutputStream os = noguiklient.sockRemoteScreen.getOutputStream(); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); Rectangle rectangle = new Rectangle(dim); Robot robot = new Robot(); BufferedImage image = robot.createScreenCapture(rectangle); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ImageIO.write(image, "jpg", byteArrayOutputStream); byte[] size = ByteBuffer.allocate(4).putInt(byteArrayOutputStream.size()).array(); int sizeas = ByteBuffer.wrap(size).asIntBuffer().get(); os.write(size); os.write(byteArrayOutputStream.toByteArray()); os.close(); 

CLIENT Réception du serveur

 JFrame okno = new JFrame(); okno.setSize(1300, 1000); okno.setTitle(" Remote screen"); okno.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); JPanel panel = new JPanel(); panel.setSize(1300,1000); panel.setLayout(null); okno.add(panel); okno.setVisible(true); InputStream is = Klient.sockRemoteScreen.getInputStream(); File photo = new File ("photo") ; FileOutputStream fos = new FileOutputStream(photo); byte[] buffer = new byte[4]; is.read(buffer); int size = ByteBuffer.wrap(buffer).asIntBuffer().get(); byte[] image = new byte [size]; int count; int i =0 ; while((count = is.read(image)) > 0) { fos.write(image); fos.flush(); } ImageIcon screen = new ImageIcon("photo"); Image imagefinal = screen.getImage(); imagefinal = imagefinal.getScaledInstance(okno.getWidth(),okno.getHeight(), Image.SCALE_SMOOTH); BufferedImage(width,height,BufferedImage.TYPE_INT_ARGB); Graphics graphics = panel.getGraphics(); while(true) { graphics.drawImage(imagefinal, 0, 0, panel.getWidth(), panel.getHeight(), panel); } 

Exemple de cette mauvaise image

Quand j’essaye d’envoyer avec ImageIO, tout va bien mais je veux essayer avec des octets et il y a un problème. Je vous remercie 🙂