Ik zit met het volgende probleem.
Ik heb een Image welke ik wil omzetten naar een byte array zodat ik deze kan versturen over het netwerk. Als ik dit op deze manier doe dan gaat het prima:
Het nadeel is dat dan het plaatje erg groot is (zo'n 300k).
Na wat google werk blijkt dat ImageIO hier een oplossing voor heeft, dus heb ik dit gedaan:
Dit lijkt ook goed te gaan, de array is een stuk kleiner (rond de 3k), maar bij het terughalen van de Image krijg ik nu een error. Namelijk:
java.io.StreamCorruptedException: invalid stream header
de code die ik gebruik om de byte array om te zetten naar een image is als volgt:
De Exception wordt gegeven door deze code: ObjectInputStream in = new ObjectInputStream(bin);
maar, dit lijkt me gewoon goed.
Nu heb ik geen flauw idee meer wat nu het probleem is, en kan er op het internet / got, ook geen oplossing voor vinden.
Het zal vast een lullig foutje zijn, maar ik zie het niet.
Ik heb een Image welke ik wil omzetten naar een byte array zodat ik deze kan versturen over het netwerk. Als ik dit op deze manier doe dan gaat het prima:
Java:
1
2
3
4
| ByteArrayOutputStream bout = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(bout); out.writeObject(plaatje); byte[] plaatjeArray = bout.toByteArray(); |
Het nadeel is dat dan het plaatje erg groot is (zo'n 300k).
Na wat google werk blijkt dat ImageIO hier een oplossing voor heeft, dus heb ik dit gedaan:
Java:
1
2
3
| ByteArrayOutputStream baos = new ByteArrayOutputStream(); ImageIO.write( (BufferedImage) plaatje, "JPG", baos); byte[] plaatjeArray = baos.toByteArray(); |
Dit lijkt ook goed te gaan, de array is een stuk kleiner (rond de 3k), maar bij het terughalen van de Image krijg ik nu een error. Namelijk:
java.io.StreamCorruptedException: invalid stream header
de code die ik gebruik om de byte array om te zetten naar een image is als volgt:
Java:
1
2
3
| ByteArrayInputStream bin = new ByteArrayInputStream(plaatjeArray); ObjectInputStream in = new ObjectInputStream(bin); ImageIcon plaatje = (ImageIcon) in.readObject(); |
De Exception wordt gegeven door deze code: ObjectInputStream in = new ObjectInputStream(bin);
maar, dit lijkt me gewoon goed.
Nu heb ik geen flauw idee meer wat nu het probleem is, en kan er op het internet / got, ook geen oplossing voor vinden.
Het zal vast een lullig foutje zijn, maar ik zie het niet.