PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Image in Datenbank schreiben, habe kein FileInputStream



mamue
24-08-2007, 18:03
Hallo,
ich habe von einer Webcam ein Bild, das in eine Datenbank (Postgres) geschrieben werden soll. Ich bin gerade im "Model" und habe ein ImageIcon, also ein Image oder zur Not auch ein BufferedImage, aber keine Datei, bzw. URL, denn das Bild, das dort im Model ankommt, ist unter der URL ja gar nicht abrufbar => dort steht ein neues.
Ich dachte, ich könnte irgendwie den ByteArrayInputStream nehmen, aber wie komme ich an die Bytes? Weiß jemand Rat?

Danke,
mamue

mamue
24-08-2007, 18:47
OMG!
Ich dachte mir, das müsste ganz einfach sein. Ich bin doch sicher nicht der Einzige, der das braucht, oder?
Also, folgende Lösung ist (noch) ungetestet, übersetzt aber und müsste eigenlich stimmen - ist zumindest nachvollziehbar:


int bufferSize = 1024;
ByteArrayOutputStream baos = new ByteArrayOutputStream( bufferSize );
try {
//bufferedPhoto ist BufferedImage
ImageIO.write( bufferedPhoto, "jpeg", baos );
} catch (IOException ioe) {
ioe.printStackTrace();
}
byte[] imageBytes = baos.toByteArray();
ByteArrayInputStream byteInput = new ByteArrayInputStream( imageBytes );
//ps ist ein preparedStatement
ps.setBinaryStream( 6, byteInput, imageBytes.length );


Vielleicht hilft es ja jemandem.
Geht das auch einfacher?

mamue

P.S.: Natürlich nicht von mir "erfunden", sondern auch nur kopiert und angepaßt.