javax.swing.ImageIcon, как часть Swing, не гарантирует наличие совместимой сериализованной формы между версиями. Тем не менее, вы можете обмануть и посмотреть на его код readObject и writeObject - найти ширину и высоту, захватить пиксели с помощью PixelGrabber. Я не совсем уверен, что правильно покрывает цветовую модель. Очевидная альтернатива - написать реальный формат изображения с помощью javax.imageio.