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.

questionAnswers(2)

yourAnswerToTheQuestion