Próbuję utworzyć prosty program do edycji obrazów w java. Zrobiłem obiekt ImageCanvas
, który zawiera wszystkie informacje dotyczące edytowanego obrazu (niektóre podstawowe właściwości, listę zastosowanych efektów, listę warstw BufferedImage
itp.) I chciałem prosty sposób na zapisanie go na dysku, aby może zostać ponownie otwarty później.Jak serializować obiekt, który zawiera BufferedImages
Doszedłem do wniosku, że korzystanie z interfejsu Java Defualt Serializable
może być dokładnie tym, czego szukałem i mógłbym napisać cały obiekt do pliku i ponownie wczytać go do pamięci później. Jednak ImageCanvas
zawiera ArrayList<BufferedImage>
i BufferedImage
nie można szeregować (wszystko inne jest).
wiem, że to jest możliwe, aby zastąpić metody writeObject()
i readObject()
, ale nigdy nie uczyniły i zastanawiałem się, czy jest jakiś prosty sposób na Java serializacji wszystko i mieć trochę niestandardowy sposób do odczytu/zapisu BufferedImage
na dysk? Czy jest jakiś inny sposób, aby z łatwością zapisać cały obiekt ImageCanvas
na dysku, który przeoczyłem? W końcu mogę zaimplementować mój własny niestandardowy typ pliku obrazu, ale na razie chciałem szybko i łatwo zapisać pliki tymczasowo podczas testowania (klasa ImageCanvas
zmieni się bardzo, więc nie chciałem aktualizować mój niestandardowy typ pliku, zanim go sfinalizuję).
jak mogę z niego korzystać. metody są prywatne. – avicennasoftwarelabs
@avicennasoftwarelabs, Po prostu implementacja metody writeObject i readObject spowoduje, że serializacja Java będzie korzystać z tych metod podczas serializowania/deserializacji obiektu, nawet jeśli metody są prywatne. –
Niestety, dekoder PNG w ImageIO ma w nim błędy, co oznacza, że dane, które odsyłasz, nie są tym samym, co dane, które zapisujesz (kolory są często wyłączone przez 1) – mjaggard