¿Cómo convertir un archivo a imagen para mostrar en ImageView en Java?

Estoy tratando de mostrar un archivo de imagen tan pronto como se selecciona de un selector de archivos. El selector de archivos está restringido a archivos .png y .jpg con los archivos seleccionados almacenados en una variable de tipo Archivo. Para hacer esto, configuré un ImageView, y deseo configurar la imagen con este nuevo archivo. El único problema es que es del tipo Archivo, no Imagen.

¿Cómo se puede lograr esto? Código hasta ahora ...

public void fileSelection(){

        FileChooser fileChooser = new FileChooser();
        fileChooser.setTitle("Select Profile Picture");
        fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("Image Files", "*.png", "*jpg"));
        File selectedFile = fileChooser.showOpenDialog(null);
        File selectedFileInput = selectedFile;

        if(selectedFile != null) {
            selectedFileOutput.setText("File selected: " + selectedFile.getName());
            previewPicture.setImage();
        } else {
            selectedFileOutput.setText("Please select a profile picture...");
        }
    }
Respuesta 1

Simplemente puede crear una imagen con

Image image = new Image(selectedFile.toURI().toString());

y luego colocarlo en ImageView:

previewPicture.setImage(image);

Otros constructores ofrecen más control sobre los recursos necesarios para cargar la imagen. Si desea forzar que la imagen tenga un tamaño determinado, puede cambiar su tamaño al cargarla, lo que ahorrará memoria si el usuario elige una imagen grande pero solo desea mostrar una versión reducida. Además, cargar una imagen grande puede llevar tiempo, por lo que no debe cargarla en el hilo de la interfaz de usuario. Los Imageconstructores que toman versiones en cadena de URL tienen opciones para cargar automáticamente la imagen en un hilo de fondo. Lo siguiente obliga a que el ancho y la altura no sean más de 240 píxeles (manteniendo la relación de aspecto original), y carga la imagen en el fondo (por lo tanto, no bloquea la interfaz de usuario):

Image image = new Image(selectedFile.toURI().toString(),
    240, // requested width
    240, // requested height
    true, // preserve ratio
    true, // smooth rescaling
    true // load in background
);

Consulte la documentación para otros constructores disponibles.

Respuesta: 2

Posible duplicado: es posible el polimorfismo sin herencia. Sé que se puede hacer mediante la anulación de métodos (herencia) y la implementación de interfaces. ¿Pero hay alguna otra manera posible? ...

¿El formato de archivo de clase proporciona soporte para la palabra clave final en caso de usarla con variables? ¿O simplemente deduce la finalidad efectiva de una variable del código y el compilador JIT realiza ...

¿Cuál es la principal diferencia en la conversión de StringBuffer a String para los siguientes tres casos: Caso 1: Uso de toString () StringBuffer sb = new StringBuffer ("Bienvenido"); Cadena st = sb.toString (); ...

Tengo una clase abstracta que llamaremos Vehículo. Clases de diésel, eléctrico y de gas para vehículos extensibles. Esas 3 clases tienen sus propios métodos y variables, así como lo que heredaron de Vehicle. ...