Vedo che un numero di persone ha avuto un problema simile, tuttavia devo ancora cercare di trovare esattamente quello che sto cercando.Java: BufferedImage alla matrice di byte e ritorno
Così, ho un metodo che legge un immagine in ingresso e lo converte in un array di byte:
File imgPath = new File(ImageName);
BufferedImage bufferedImage = ImageIO.read(imgPath);
WritableRaster raster = bufferedImage .getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
Quello che ora voglio fare è riconvertirlo in un BufferedImage (Ho una domanda per la quale Ho bisogno di questa funzionalità). Si noti che "test" è l'array di byte.
BufferedImage img = ImageIO.read(new ByteArrayInputStream(test));
File outputfile = new File("src/image.jpg");
ImageIO.write(img,"jpg",outputfile);
Tuttavia, questo restituisce il seguente eccezione:
Exception in thread "main" java.lang.IllegalArgumentException: im == null!
Questo perché l'IMG BufferedImage è nullo. Penso che questo abbia qualcosa a che fare con il fatto che nella mia conversione originale da BufferedImage a array di byte, le informazioni sono cambiate/perse in modo che i dati non possano più essere riconosciuti come jpg.
Qualcuno ha qualche suggerimento su come risolvere questo? Sarebbe molto apprezzato
Flush e vicino farà niente –
C'è un motivo speciale per usare jpg qui? – hguser
E se close() non ha fatto nulla, chiamerebbe flush() stesso, e sarebbe necessario chiamarlo * prima * suByteArray(), non dopo. – EJP