Java - Byte Array in BufferedImage funktioniert nicht

02/08/2012 18:09 finnonso#1
hallo ich versuche schon seit einiger zeit ein byte[] in ein BufferedImage zu konvertieren aber ich bekomme immer eine IllegalArgumentException weil

Code:
 ImageIO.read(new ByteArrayInputStream(b)
null wiedergibt
das byte array wird über das internet via socket erhalten und in das byte[] gespeichert.

hier nochmal der ganze code der betroffenen stellen:

hier ist der server der die anfrage sendet und das bild empfängt:
Code:
			Socket socket = null;
		    ServerSocket server;
			
			
				        server = new ServerSocket(1478);
					socket = server.accept();
						  
					InputStream in = socket.getInputStream();;
								
                    byte[] b = new byte[3000];
					int byteLenght = 0;
					while(in.read(b) != -1)
					{
						int j;
						System.out.println(j = in.read());
							
						byteLenght += j;
						
						
						
						
					}
					System.out.println(byteLenght);
					byte[] image = new byte[byteLenght];
					int byteCounter = 0;
					
						in = socket.getInputStream();
						
						
						for(int i1 = 0; i1 < b.length; lol++)
						{
							
							System.out.println("b: " + i1 + " value: " + b[lol]);
							if(b[i1] == 0)
							{
								
								
								
							}
							
							
						}
						
						InputStream in1 = new ByteArrayInputStream(b);
						BufferedImage img = ImageIO.read(new ByteArrayInputStream(b));
						
						if(img == null) System.out.println("null");
						
			            ImageIO.write(img, "jpeg", new File("C:/image.jpg"));
			            
						in.close();
						socket.close();
						
					} catch (IOException e1) {
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}

und hier der client der einen screenshot macht und ihn an den server sendet:

Code:
				System.out.println("taking screenshot");
			    BufferedImage screen = robot.createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()));
			    ImageIO.write( screen, "jpg", new File("C:/boot&-8.jpg") ); 
			    BufferedImage srcImage = ImageIO.read(new File("C:/boot&-8.jpg"));
			    byte[] data = ((DataBufferByte) srcImage.getData().getDataBuffer()).getData();
			    
			    
			    
			    Socket socket = new Socket(args[0], 1478);
			    OutputStream out = socket.getOutputStream();
			    Thread.currentThread().sleep(500);
			    out.write(data);
			    out.close();
			    socket.close();