G
Gast
Gast
Hallo Leute,
ich schreibe und lese eine LinkedList mit BufferedImages in/aus eine/einer Datei. Dazu muss das BufferedImage serialisiert werden. Dies soll über folgende Klasse geschehen:
Geschrieben wird die Datei über den Code...
Bis hier hin funktioniert das Ganze auch einwandfrei. Die Datei wird mit Inhalt angelegt. Wenn man die jedoch lesen will, bekomme ich jedesmal eine Klassen-Casting-Exception:
Lesen tu ich die Datei über:
Was ist hier falsch????
-Prosit und frohes neues Jahr-
ich schreibe und lese eine LinkedList mit BufferedImages in/aus eine/einer Datei. Dazu muss das BufferedImage serialisiert werden. Dies soll über folgende Klasse geschehen:
Code:
public class SerializedBufferedImage implements Serializable {
private static final long serialVersionUID = 5012448446051506561L;
private int width;
private int height;
private int[] pixels;
public SerializedBufferedImage() {
}
public SerializedBufferedImage(BufferedImage img) {
setImage(img);
}
public final BufferedImage getImage() {
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
img.setRGB(0, 0, width, height, pixels, 0, width);
return img;
}
public final void setImage(BufferedImage img) {
width = img.getWidth();
height = img.getHeight();
pixels = new int[width * height];
pixels = img.getRGB(0, 0, width, height, pixels, 0, width);
}
Geschrieben wird die Datei über den Code...
Code:
if (saver.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
try {
FileOutputStream fos = new FileOutputStream(saver.getSelectedFile());
ObjectOutputStream oos = new ObjectOutputStream(fos);
SerializedBufferedImage sImg = new SerializedBufferedImage();
LinkedList<SerializedBufferedImage> sImgList = new LinkedList<SerializedBufferedImage>();
for (int i = 0; i < this.animlist.size(); i++) {
sImg.setImage(this.animlist.get(i));
sImgList.add(sImg);
}
oos.writeObject(sImgList);
oos.flush();
oos.close();
fos.close();
fos = null;
oos = null;
sImg = null;
sImgList = null;
} catch (IOException ex) {
Logger.getLogger(SpritesheetExtractor.class.getName()).log(Level.SEVERE, null, ex);
} finally {
}
}
Bis hier hin funktioniert das Ganze auch einwandfrei. Die Datei wird mit Inhalt angelegt. Wenn man die jedoch lesen will, bekomme ich jedesmal eine Klassen-Casting-Exception:
Code:
Exception in thread "main" java.lang.ClassCastException: SN32.microPrograms.SerializedBufferedImage
Code:
try {
FileInputStream fis = new FileInputStream(path);
ObjectInputStream ois = new ObjectInputStream(fis);
LinkedList<SerializedBufferedImage> tmpList = (LinkedList<SerializedBufferedImage>) ois.readObject();
BufferedImage [] tmpImg = new BufferedImage[tmpList.size()];
for (int i = 0; i < tmpList.size(); i++) {
tmpImg[i] = tmpList.get(i).getImage();
}
tmpList = null;
fis.close();
ois.close();
return tmpImg;
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
Was ist hier falsch????
-Prosit und frohes neues Jahr-