Abspeichern aus einem ImageIcon ins korrekte Format

synchron

Mitglied
Hallo,

ich habe folgendes Problem. Ich möchte per ImageIcon Bilder laden und etwas später abspeichern. das laden funktioniert einwandfrei per

new ImageIcon(url);

nun kann ich das ganze aber nicht abspeichern.

Wenn ich es über die Selialisierung versuche

Java:
FileOutputStream fout = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(img);
oos.close();

kann das Bild nicht von der platte aus angesehen werden.

wenn ich es mir ImageIO schreibe muss ich das Format kennen, das ich aber nicht mehr habe, da ich die URL nicht mehr habe zu diesem Zeitpunkt.

Weiß jemand eine Lösung dafür?
Danke
 
ok, ich hab mal weiterversucht.

ich kann mir das Format doch bis zum Ende vorhalten.
doch irgendwie zerschießt mir ImageIO beim einlesen animierte gifs...

Ich muss, nach dem einlesen die Images in byte[] wandeln um sie serialisiert versenden zu können. vielleicht geht auch dabei die animation verloren.

das hin und herwandeln passiert hier:

Java:
	public static BufferedImage fromByteArray(byte[] imagebytes) {
		try {
			if (imagebytes != null && (imagebytes.length > 0)) {
				BufferedImage im = ImageIO.read(new ByteArrayInputStream(
						imagebytes));
				return im;
			}
			return null;
		} catch (IOException e) {
			throw new IllegalArgumentException(e.toString());
		}
	}

	public static byte[] convertToBytes(Image bufferedImage, String format) {
		if (bufferedImage != null) {
			BufferedImage image = (BufferedImage) bufferedImage;
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			try {
				ImageIO.write(image, format, baos);
			} catch (IOException e) {
				throw new IllegalStateException(e.toString());
			}
			byte[] b = baos.toByteArray();
			return b;
		}
		return new byte[0];
	}
 
So, ich hab das ganze einfach jetzt anders gelöst.
Die daten werden über die URL als bytestream eingelesen. dann versendet, am client abgespeichert und dort dann entsrechend je nach verwendung wieder geladen.
Hat jetzt mit meiner ursprünglichen Überlegung nix mehr zu tun, funzt aber sehr gut.
 

Zurück
Oben