Serializando um objeto que inclui BufferedImages

Como o título sugere, estou tentando salvar para arquivar um objeto que contém (entre outras variáveis, Strings, etc.) algumas BufferedImages.

Eu achei isto:Como serializar um objeto que inclui BufferedImages

E funciona como um encanto, mas com um pequeno contratempo: funciona bem se o seu objeto contiver apenas UMA imagem.

Estou lutando para que a solução dele funcione com mais de uma imagem (o que, em teoria, deveria funcionar), mas cada vez que leio o arquivo, recupero meu objeto, recebo o número correto de imagens, mas apenas a primeira a imagem é realmente lida; os outros são apenas imagens nulas que não contêm dados.

É assim que meu objeto se parece:

 class Obj implements Serializable
    {
transient List<BufferedImage> imageSelection= new ArrayList<BufferedImage>();
     // ... other vars and functions

private void writeObject(ObjectOutputStream out) throws IOException {
        out.defaultWriteObject();
        out.writeInt(imageSelection.size()); // how many images are serialized?
        for (BufferedImage eachImage : imageSelection) {
            ImageIO.write(eachImage, "jpg", out); // png is lossless
        }
    }

 private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
        in.defaultReadObject();
        final int imageCount = in.readInt();
        imageSelection = new ArrayList<BufferedImage>(imageCount);
        for (int i=0; i<imageCount; i++) {
            imageSelection.add(ImageIO.read(in));
        }
    }

    }

É assim que estou escrevendo e lendo o objeto de e para um arquivo:

// writing
try (
              FileOutputStream file = new FileOutputStream(objName+".ser");
              ObjectOutputStream output = new ObjectOutputStream(file);
            ){
              output.writeObject(myObjs);
            }  
            catch(IOException ex){
              ex.printStackTrace();
            }

// reading
try(
                    FileInputStream inputStr = new FileInputStream(file.getAbsolutePath());
                    ObjectInputStream input = new ObjectInputStream (inputStr);
                    )
                    {myObjs = (List<Obj>)input.readObject();}
                catch(Exception ex)
                    {ex.printStackTrace();}

Embora eu tenha uma lista de objetos, eles são lidos corretamente e cada elemento da lista é preenchido de acordo, exceto para o BufferedImages.

Alguém tem algum meio de consertar isso?

questionAnswers(1)

yourAnswerToTheQuestion