Java: BufferedImage para a matriz de bytes e de volta
Vejo que várias pessoas tiveram um problema semelhante, mas ainda estou tentando encontrar exatamente o que estou procurando.
Então, eu tenho um método que lê uma imagem de entrada e a converte em uma matriz de bytes:
File imgPath = new File(ImageName);
BufferedImage bufferedImage = ImageIO.read(imgPath);
WritableRaster raster = bufferedImage .getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
O que eu quero agora é convertê-lo de volta em um BufferedImage (eu tenho um aplicativo para o qual eu preciso dessa funcionalidade). Observe que "teste" é a matriz de bytes.
BufferedImage img = ImageIO.read(new ByteArrayInputStream(test));
File outputfile = new File("src/image.jpg");
ImageIO.write(img,"jpg",outputfile);
No entanto, isso retorna a seguinte exceção:
Exception in thread "main" java.lang.IllegalArgumentException: im == null!
Isso ocorre porque o BufferedImage img é nulo. Eu acho que isso tem algo a ver com o fato de que na minha conversão original de BufferedImage para matriz de bytes, informações são alteradas / perdidas para que os dados não podem mais ser reconhecidos como um jpg.
Alguém tem alguma sugestão sobre como resolver isso? Seria muito apreciado.