У меня есть объект Serializable, который должен содержать java.awt.Image в качестве своего члена. Как мне его сериализовать? (Отредактировано из не очень ясной первой версии, извините.)




Ничего из того, что я знаю. Я считаю, что вам нужно написать свой собственный сериализатор, чтобы он в основном сохранял значения ширины, высоты и пикселей ... Или записывать его в поток как PNG или что-то в этом роде
ImageIcon реализует Serializable, и его можно использовать для обертывания класса Image
http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/ImageIcon.html
я пробовал .... но получил ошибку .... вложенное исключение: java.io.EOFException см. вопрос, который я опубликовал ... stackoverflow.com/questions/11117626/…
Хотя это решение работает, оно создает очень большие сериализованные файлы. Чтобы решить эту проблему, необходимо сохранить файлы на диске нетронутыми и сохранить ссылку, скопировав изображение в место, относящееся к сериализованному файлу.
javax.swing.ImageIcon, как часть Swing, не гарантирует совместимость сериализованной формы между версиями. Однако вы можете схитрить и посмотреть на его код readObject и writeObject - найти ширину и высоту, захватить пиксели с помощью PixelGrabber. Я не совсем уверен, что правильно охватывает цветовую модель. Очевидная альтернатива - написать реальный формат изображения с помощью javax.imageio.
Просто имейте в виду: Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими выпусками Swing.