Witam
Mam pytanie odnośnie przesyłania danych.
Na początku przesyłam trochę danych tekstowych (Stringi) używając DataInputStream oraz DataOutputStream i jest ok.Jednak problem pojawia się gdy chcę przesłać jakieś obrazki. Próbowałem już różnych metod (ObjectInput/Output Stream, jakieś rzutowania) jednak cały czas coś się chrzani. Jaki jest najprostszy sposób żeby sobie z tym poradzić ?
0
1
Tutaj jest jakiś przykład: http://www.rgagnon.com/javadetails/java-0542.html Pisząc "coś się chrzani" nie oczekuj wiele pomocy, wróżek tutaj mało.
0
Zrobiłem test, ale nadal jest coś nie tak. "a" wypisuje się raz a "b" w ogóle
Serwer
DataOutputStream dataOutputStream;
File myFile = new File ("obrazek.jpg");
byte [] mybytearray = new byte [(int)myFile.length()];
FileInputStream fis = new FileInputStream(myFile);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(mybytearray,0,mybytearray.length);
dataOutputStream.write(mybytearray,0,mybytearray.length);
dataOutputStream.flush();
bis.close();
Klient
public static BufferedImage rysunek;
DataInputStream dataInputStream;
byte [] mybytearray = new byte[6022386];
int bytesRead;
int current = 0;
do {
bytesRead =
dataInputStream.read(mybytearray, current, (mybytearray.length-current));
if(bytesRead >= 0) current += bytesRead;
System.out.println("a");
} while(bytesRead > -1);
rysunek = ImageIO.read(new ByteArrayInputStream(mybytearray));
System.out.println("b");
1
Pisałem kiedyś sieciową przeglądarkę plików graficznych. Wysyłałem obrazki z serwera tak:
BufferedImage bi = ImageIO.read(file);
if(bi != null)
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bi,"jpg",baos);
baos.flush();
byte[] imageInByte = baos.toByteArray();
baos.close();
oos.writeObject(imageInByte);
//oos = new ObjectOutputStream(serverSocket.getOutputStream());
}
a czytałem tak:
byte[] imageInByte = (byte[])ois.readObject();
currentImage = ImageIO.read(new ByteArrayInputStream(imageInByte));
//ois = new ObjectInputStream(socket.getInputStream());
0
No nareszcie coś działa.Dzięki