Myślę, że właśnie odkryłeś brakującą funkcję.
- Czy ma sens mieć
BufferedImage implements Serializable
? Moim zdaniem tak. Zwłaszcza jeśli BufferedImage
nie został załadowany z pliku, ale został stworzony i narysowany. Ale nawet jeśli pochodzi z pliku, kogo to obchodzi skąd pochodzi, jeśli chcę go wymienić między VM poprzez RMI lub podobny?
- Czy jest coś w numerze
BufferedImage
, które stanowi silny techniczny powód przeciwko BufferedImage implements Serializable
? Przeglądałem kod źródłowy i nie sądzę.
Sprawdziłem, czy baza błędów zawiera już wpis, i nie mogłem znaleźć niczego powiązanego. Jest to więc Twoja szansa, aby wnieść swój wkład i zaproponować żądanie funkcji za pośrednictwem bazy danych błędów. http://bugs.java.com/bugdatabase/
Jako obejście, można zajrzeć do realizacji readObject()
i writeObject()
w klasie javax.swing.ImageIcon
. ImageIcon
to Serializable
. Być może można zawinąć BufferedImage
w przypadku ImageIcon
w przypadku użycia lub w inny sposób zapewnić logikę z ImageIcon.readObject()
/ImageIcon.writeObject()
.
Jestem całkiem nie ma żadnych (lub bardzo mało co najmniej) klas BufferedXXX, które są serializowalne. – Falmarri
Duplikat http://stackoverflow.com/questions/15058663/how-to-serialize-an-object-athe-includes-bufferedimages lub całkiem podobnie myślę. Ale byłoby ciekawie poznać powód, dla którego nie można go serializować. Myślę, że ponieważ zawiera dane rastrowe specyficzne dla archa i endian. –
@Fabio Bohnenberger Spróbuj użyć 'int [] getRGB (....)' i serializuj zwróconą tablicę całkowitą zamiast obrazu, a gdy deserializujesz tablicę, spróbuj odtworzyć 'BufferedImage' używając metody' setRGB (. ...) ' –