Tomas Bisciak Tomas Bisciak - 10 months ago 281
Java Question

How to get byte[] from javafx imageView?

How do i get byte[] from javafx image/imageview class? I want to store my image as a Blob into my database.This is the method that i use for it

public PreparedStatement prepareQuery(HSQLDBConnector connector) {
try {
Blob logoBlob = connector.connection.createBlob();
logoBlob.setBytes(0,logo.getImage());//stuck here
for (int i = 0, a = 1; i < data.length; i++, a++) {

connector.prepStatCreateProfile.setString(a, data[i]);

//store LOB

connector.prepStatCreateProfile.setBlob(11, logoBlob);

} catch (SQLException ex) {
return connector.prepStatCreateProfile;

Is there a way to convert from my current object (imageview),image) into byte[]?, or shoud i start to think about using other class for my image/ alternatively point to the location with reference and work with paths/urls?


try this one:

BufferedImage bImage = SwingFXUtils.fromFXImage(logo.getImage(), null);
ByteArrayOutputStream s = new ByteArrayOutputStream();
ImageIO.write(bImage, "png", s);
byte[] res  = s.toByteArray()
s.close(); //especially if you are using a different output stream.

should work depending on the logo class

you need to specify a format while writing and reading, and as far as I remember bmp is not supported so you will end up with a png byte array on the database