在javafx中将数据库中的字节显示为imageview中的图像

时间:2014-09-01 15:46:51

标签: database javafx imageview byte

请我一直坚持如何转换我存储的图像 数据库并将其显示为javafx中imageview中的图像。

全部 之前提出的问题没有帮助我。 我使用objectdb作为我的数据库 我还使用fxml来构建我的GUI

for (Person p : person) {
            name.setText(p.getName());
            gender.setText(p.getGender());

            byte[] byteArray = p.getImage();
            image.setImage(new Image(new ByteArrayInputStream(byteArray)));

}

1 个答案:

答案 0 :(得分:2)

我将使用文件选择器显示保存到数据库的详细步骤,并将图像写入硬盘驱动器上目录(文件夹)中的文件,并将其显示到fmxl GUI中的imageview。

以下内容在按钮事件期间触发或初始化 来自控制器

FileChooser choose = new FileChooser();
FileChooser.ExtensionFilter extFilterJPG = new FileChooser.ExtensionFilter("JPG files (*.jpg)", "*.JPG");
        FileChooser.ExtensionFilter extFilterPNG = new FileChooser.ExtensionFilter("PNG files (*.png)", "*.PNG");
        choose.getExtensionFilters().addAll(extFilterJPG, extFilterPNG);
File file = choose.showOpenDialog(null);
        try {
            BufferedImage bufferedImage = ImageIO.read(file);
            byte[] b;
            try (ByteArrayOutputStream out = new ByteArrayOutputStream(262144)) {
                ImageIO.write(bufferedImage, "jpg", out);
                out.flush();
                b = out.toByteArray();
            }
EntityService service = new EntityService();
Person p = new Person();
            p.setId(UUID.randomUUID().toString());
            p.setImage(b);
            service.putPerson(p);
} catch (IOException e) {
            e.printStackTrace();
        }




Person p = service.getPerson();
        byte[] byteArray = p.getImage();
        ByteArrayInputStream in = new ByteArrayInputStream(byteArray);
        BufferedImage read = ImageIO.read(in);
        image.setImage(SwingFXUtils.toFXImage(read, null));


String output = "C:\\java\\images\\1.jpg";
        try (FileOutputStream fos = new FileOutputStream(output)) {
            fos.write(byteArray);
        } catch (FileNotFoundException ex) {
            System.out.println("FileNotFoundException : " + ex);
        } catch (IOException ioe) {
            System.out.println("IOException : " + ioe);
        }