Java - JavaFx - Problema con imagenes

 
Vista:
sin imagen de perfil

JavaFx - Problema con imagenes

Publicado por Alejandro (7 intervenciones) el 03/04/2018 02:55:27
Muy buenas de nuevo, esta vez traigo un duda, que por mas que le busque no le encuentro solución, ya estoy frustrado y esta es mi ultima opción.

Bueno mi problema, es que al intentar recuperar una imagen de una base de datos mysql e insertarla en un ImageView, me tira un error, incompatible types: bufferedimage cannot be converted to image, si alguien sabe el código para hacerlo en javaFx, me lo podría decir, necesito su ayuda!

1
2
3
4
5
6
ConexionBD con = new ConexionBD();
Connection cn = con.Conexion();
 
PreparedStatement prep1;
Statement prep2;
ResultSet result1, result2;

1
String consulta2 = "SELECT Nombre,Logo FROM datosempresa";

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
try {
    prep2 = cn.createStatement();
    result2 = prep2.executeQuery(consulta2);
 
 
    if (result2.next()) {
        lblNombreEmpresa.setText(result2.getString(1)); //Funciona
        Image i = null;
        Blob blob = result2.getBlob("foto");
        i = javax.imageio.ImageIO.read(blob.getBinaryStream()); //Error
        imgFotoEmpresa.setImage(i); //ImageView
    }
} catch (SQLException ex) {
    Logger.getLogger(PrincipalController.class.getName()).log(Level.SEVERE, null, ex);
    System.out.println(ex.getMessage());
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kingk
Val: 247
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

JavaFx - Problema con imagenes

Publicado por kingk (108 intervenciones) el 04/04/2018 15:29:06
Hola, puedes cambiar la linea donde te da el error de esta forma:

1
i = javax.imageio.ImageIO.read(blob.getBinaryStream()).getScaledInstance(ancho, alto, Image.SCALE_DEFAULT);

Donde ancho y alto son las medidas del tamaño con el que quieres que tu imagen se muestre.
Espero haberte ayudado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

JavaFx - Problema con imagenes

Publicado por Alejandro (7 intervenciones) el 04/04/2018 22:34:41
Bien, primero que nada gracias por tu ayuda. Pero sigue habiendo un problema y es que al insertar la linea de codigo que me sugieras, hay un problema con el Image.SCALE_DEFAULT ya que esa invocacion solo se puede hacer con importando
1
import java.awt.Image;
, la que necesito y es la que estou utilizando es la
1
import javafx.scene.image.Image;
, de no usar esa, hay una incompatibilidad de imagenes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kingk
Val: 247
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

JavaFx - Problema con imagenes

Publicado por kingk (108 intervenciones) el 05/04/2018 15:46:53
Puedes optar también por usar el constructor de laclase Imagen de esta forma:
i = new Imagen(blob.getBinaryStream());
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

JavaFx - Problema con imagenes

Publicado por Juan Francisco (58 intervenciones) el 05/04/2018 18:37:20
No se si servira pero yo converti un objeto Blob en un Image pero del paquete awt ...de java java.awt.Image no se si sera lo mismo

1
2
3
4
5
6
7
8
9
Blob blob = rs.getBlob("imagen");
byte[] data = blob.getBytes(1, (int)blob.length());
BufferedImage img = null;
try {
	img = ImageIO.read(new ByteArrayInputStream(data));
} catch (IOException e) {
 
	e.printStackTrace();
}

Eso al heredar de Image podia setear un Icono..en un Label de swing que pedia un ImageIcon

ImageIcon imgIcon =new ImageIcon(img.getScaledInstance(label.getWidth(),label.getHeight(), Image.SCALE_DEFAULT));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

JavaFx - Problema con imagenes

Publicado por Alejandro (7 intervenciones) el 05/04/2018 21:29:11
Les agradezco a los dos por tomarse el tiempo de contestar, pues ya he resulto el problema y resulta que solo había que hacer un convercion, por lo que el código final para recuperar la imagen de la base de datos mysql e insertarlo a un ImageView, seria este:
1
2
3
4
5
6
7
8
9
10
11
12
try {
	String consulta = "SELECT Logo FROM datosempresa";
	prep = cn.createStatement();
	result = prep2.executeQuery(consulta);
 
while (result2.next()) {
	//Mostrar imagen en la pantalla principal
	Image i = null;
	Blob blob = result2.getBlob("Logo");
	i = SwingFXUtils.toFXImage(javax.imageio.ImageIO.read(blob.getBinaryStream()), null);
	imgFotoEmpresa.setImage(i);
}


Espero les sirva, saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar