Преобразование байтового массива в png

У меня есть байтовый массив, полученный из изображения с использованием следующего кода.

String path = "/home/mypc/Desktop/Steganography/image.png";
File file = new File(path);
BufferedImage bfimage = ImageIO.read(file);

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(bfimage, "png", baos);
baos.flush();
byte[] img_in_bytes = baos.toByteArray();
baos.close();

Затем я преобразовал эти байты обратно в изображение PNG, используя следующий код.

BufferedImage final_img = ImageIO.read(new ByteArrayInputStream(img_in_bytes));
File output_file = new File("Stegano2.png");
ImageIO.write(final_img, "png", output_file);

Это прекрасно, если я просто выполню этот кусок кода. Но если я попытаюсь изменить некоторые байты между ними, скажем так:

    Insert_number_to_image(image_in_bytes,  10);

и мой метод "Inset_number_to_image" выглядит так:

static void Insert_number_to_image(byte[] image, int size){     
    byte[] size_in_byte = new byte[4];
    size_in_byte[0] = (byte)(size >>> 0);
    size_in_byte[1] = (byte)(size >>> 8);
    size_in_byte[2] = (byte)(size >>> 16);
    size_in_byte[3] = (byte)(size >>> 24);

    byte temp;
    int count = 0;

    for(int i=0; i<4; i++)
    {
        for(int j=0; j<8; j++)
        {
            temp = size_in_byte[i];
            temp = (byte)(temp >>> j);
            temp = (byte)(temp & 1);
            if(temp == 1)
            {
                image[count] = (byte)(image[count] | 1);
            }
            else if(temp == 0)
            {
                image[count] = (byte)(image[count] & (byte)(~(1)));
            }
            count++;
        }
    }
}

затем, после этого, когда я сохраняю измененный массив байтов в качестве изображения png, используя тот же код, упомянутый выше, я получаю эту ошибку:

Exception in thread "main" java.lang.IllegalArgumentException: image == null!
    at javax.imageio.ImageTypeSpecifier.createFromRenderedImage(ImageTypeSpecifier.java:925)
    at javax.imageio.ImageIO.getWriter(ImageIO.java:1591)
    at javax.imageio.ImageIO.write(ImageIO.java:1520)
    at Steganography.main(Steganography.java:211)

Ответы на вопрос(1)

Ваш ответ на вопрос