2015-03-10 33 views
6

Java'da BufferedImage serileştirmeye çalışıyorum ama programımı çalıştırdığımda NotSerializableException aldım.Neden java.awt.image.BufferedImage serializable değil?

BufferedImage sınıfına baktığımda, bunun Serializable uygulanmadığını fark ettim.

Neden BufferedImageSerializable uygulamıyor?

+0

Oldukça seri hale getirilebilecek herhangi bir (veya çok az sayıda) BufferedXXX sınıfı yok. – Falmarri

+0

http://stackoverflow.com/questions/15058663/how-to-serialize-an-object-that-includes-bufferedimages kopyası veya oldukça benzer düşünüyorum. Ama serileştirilmesinin nedenini bilmek ilginç olurdu. Sanırım kemerlere özgü raster verileri ve endian içeriyor. –

+2

@Fabio Bohnenberger 'int [] getRGB (....) 'yi kullanmayı deneyin ve döndürülen tamsayı dizisini görüntü yerine serileştirin ve diziyi seri hale getirdiğinizde' setRGB yöntemini kullanarak' BufferedImage 'öğesini yeniden oluşturmaya çalışın. ...) ' –

cevap

4

Sanırım eksik bir özellik keşfettiniz.

  • BufferedImage implements Serializable olması mantıklı mı? Benim görüşüme göre. Özellikle BufferedImage bir dosyadan yüklenmemiş, ancak oluşturulmuş ve çizilmiş. Ama bir dosyadan olsa bile, VM'ler arasında RMI veya benzeri ile değiştirmek istediğimde, malzemelerin nereden geldiğini kimin umursadığını?
  • BufferedImage implements Serializable karşı güçlü bir teknik neden sağlayan BufferedImage içinde bir şey var mı? Kaynak kodunu taradım ve sanmıyorum.

Hata veritabanı zaten bunun için bir girdi içerip içermediğini kontrol ettim ve ilgili hiçbir şey bulamadım. Yani, bu sizin katkılarınızı yapma ve hata veritabanı üzerinden bir özellik önerisi önerme şansınız. http://bugs.java.com/bugdatabase/

Çözüm olarak, sınıfta javax.swing.ImageIcon içinde readObject() ve writeObject() uygulanmasına bakmak isteyebilirsiniz. ImageIcon, Serializable. Belki de, kullanım durumunuz için ImageIcon numaralı telefondan BufferedImage'u paketleyebilir veya bir şekilde mantığı ImageIcon.readObject()/ImageIcon.writeObject()'dan sağlayabilirsiniz.

+2

Desteklendi. Açıkçası, * javax.swing.ImageIcon.' için geçerli değildir. – EJP

+1

@ Jean-FrançoisSavard Neden bir görüntü "Seri hale getirilebilir" değil? Her şeyle karşılaştırıldığında bir görüntü hakkında bu kadar özel olan nedir? –

+2

@ Jean-FrançoisSavard Resim zaten bir dosyaya sahipseniz sadece bir dosyadır. Eğer buna sahip değilsen ve buna ihtiyacın varsa, onu başka bir yerden almalısın. Görüntüler mutlaka dosya değildir: dinamik olarak üretilebilirler. Bu gerçekten bir anlam ifade etmiyor. – EJP

İlgili konular