BufferedImage -> byte[] Array -> BufferedImage

mr_g666

Grünschnabel
Hi zusammen,

sitz jetzt seit einiger Zeit (ohne in Foren oder anderswo eine funktionierende Lösung gefunden zu haben) an folgendem Problem:

Ich will ein BufferedImage in ein byte[] array schreiben und dann aus diesem wieder auslesen. Das schreiben scheint zu klappen, aber bei lesen bekomm ich das bild nicht wieder (Objekt ist null).

Hier mein Code:

zum einlesen:
Code:
public static byte[] BufferedImageToByte(BufferedImage bild) {
		try {
			ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
			ImageIO.write(bild, "jpeg", byteArrayOutputStream);
			byte[] imageData = byteArrayOutputStream.toByteArray();
			return imageData;
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}

zum auslesen verwende ich:

Code:
 try{
	image = ImageIO.read((InputStream)new ByteArrayInputStream(imageData));
} catch (IOException e) { e.printStackTrace(); }

wobei imageData das byte[] array mit den Daten ist.

Klappt aber nicht.

Irgendwelche Ideen?

THX
 
Moin!

Java:
				byte[] byBuf = new byte[puffer.size()];
				for (int j = 0; j < byBuf.length; j++)
					byBuf[j] = ((Integer) puffer.get(j)).byteValue();
				Image image = Toolkit.getDefaultToolkit().createImage(byBuf);

und byBuf ist dann in diesem Falle dein Objekt: imageData

HF
Chriz
 
Moin!

Java:
				byte[] byBuf = new byte[puffer.size()];
				for (int j = 0; j < byBuf.length; j++)
					byBuf[j] = ((Integer) puffer.get(j)).byteValue();
				Image image = Toolkit.getDefaultToolkit().createImage(byBuf);

und byBuf ist dann in diesem Falle dein Objekt: imageData

HF
Chriz

was ich nicht ganz verstehe: was ist puffer?

rein theoretisch müsste ja nach deiner Lösung:

Code:
image = Toolkit.getDefaultToolkit().createImage(imageData);

reichen, sowas in der Art hätt ich auch schon probiert.


Das Problem ist vor dem umwandeln des Images in ein byte[] array hab ich folgendes Objekt:

Code:
BufferedImage@182f0db: type = 10 ColorModel: #pixelBits = 8 numComponents = 1 color space = java.awt.color.ICC_ColorSpace@192d342 transparency = 1 has alpha = false isAlphaPre = false ByteInterleavedRaster: width = 40 height = 40 #numDataElements 1 dataOff[0] = 0

nach einlesen mit image = Toolkit.getDefaultToolkit().createImage(imageData);

hab ich folgendes:

Code:
sun.awt.image.ToolkitImage@126b249

kann das aber nicht (es geht um ein applet) ausgeben :confused:
 
Moin!

Java:
				byte[] byBuf = new byte[puffer.size()];
				for (int j = 0; j < byBuf.length; j++)
					byBuf[j] = ((Integer) puffer.get(j)).byteValue();
				Image image = Toolkit.getDefaultToolkit().createImage(byBuf);

und byBuf ist dann in diesem Falle dein Objekt: imageData

HF
Chriz


Warum so kompliziert?

Code:
byte[] imageByteArray = imageToByteArray(image);
ByteArrayInputStream inputStream = new ByteArrayInputStream(imageByteArray);
Image newImage = ImageIO.read(inputStream);

MFG

Sascha
 
Warum so kompliziert?

Code:
byte[] imageByteArray = imageToByteArray(image);
ByteArrayInputStream inputStream = new ByteArrayInputStream(imageByteArray);
Image newImage = ImageIO.read(inputStream);

MFG

Sascha

wenn ich das versuche ist das newImage null bzw leer....
 
Zuletzt bearbeitet von einem Moderator:
so, nu ...

poste doch mqal ein paar details

wo kommt das bild her das du einließt. wo, sprich auf welcher komponente willst du es ausgeben. poste mal ein wenig mehr code, das dein problem klarer wird....
 
Zurück