02. november 2005 - 22:48Der er
11 kommentarer og 1 løsning
Convert: Billede > Byte array OG byte array > billede
Jeg sidder og leger med noget UDP og vil gerne prøve at sende et billede.
Hvis vi nu fx siger jeg har et Image / BufferedImage (Underordnet) hvordan laver jeg så dette om til et byte array? Og når jeg modtager det vil jeg gerne lave dette byte array om til et billede igen.
public static byte[] encodeImage(BufferedImage img, String format, float quality) { try { // Billedet bliver skrevet i byte[] format til denne stream ByteArrayOutputStream output = new ByteArrayOutputStream();
// Skriv billedet til den underliggende stream writer.write(null, new IIOImage(img, null, null), param); imgOut.flush(); writer.dispose(); imgOut.close();
// Et byte[] array repræsentation af et image byte[] encoded = output.toByteArray(); return encoded; } catch (Exception e) { e.printStackTrace(); return null; } }
public static BufferedImage decodeImage(byte[] imageData, String format) { try { // Stream der skal skrives fra ByteArrayInputStream input = new ByteArrayInputStream(imageData);
Jeg har oprettet et Image og tegnet det på et BufferedImage. Dette har jeg testet og det vises korrekt. Når jeg sender det er der ingen problemer, men når jeg modtager det får jeg denne fejl:
javax.imageio.IIOException: Invalid JPEG file structure: missing SOS marker at com.sun.imageio.plugins.jpeg.JPEGImageReader.readImageHeader(Native Method) at com.sun.imageio.plugins.jpeg.JPEGImageReader.readNativeHeader(Unknown Source) at com.sun.imageio.plugins.jpeg.JPEGImageReader.checkTablesOnly(Unknown Source) at com.sun.imageio.plugins.jpeg.JPEGImageReader.gotoImage(Unknown Source) at com.sun.imageio.plugins.jpeg.JPEGImageReader.readHeader(Unknown Source) at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(Unknown Source) at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(Unknown Source)Recieved image
at javax.imageio.ImageReader.read(Unknown Source) at main.ImageConverter.decodeImage(ImageConverter.java:75) at main.RecieveHandler.run(RecieveHandler.java:27)
Den øverste reference i fejlmeddelelsen fører hen til linien:
Hov vent. Det var fordi jeg ikke havde sat størrelsen på min DatagramPacket stor nok til at kunne rumme billedet. Det virker nu. Takker Mikkel. Læg et svar.
Arne jeg beklager at Mikkel fik pointene men hans bidrag var mere konkret og til at tage at føle på. No hard feelings.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.