2014-09-01 4 views
0

내 데이터베이스에서 저장된 이미지를 변환하고 javafx의 imageview 이미지로 표시하는 방법을 고집했습니다.javafx에서 imageview의 이미지로 데이터베이스의 바이트 표시

모든 이전 질문과 관련하여 도움이되지 않았습니다. 내 데이터베이스로 objectdb 사용하고 나는 또한 내 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

를 구축하는 fxml을 사용 나는 파일 선택기를 사용하여 데이터베이스에 저장하고있는 파일에 이미지를 작성하는 방법에 대한 자세한 단계를 보여 드리겠습니다 디렉토리 (폴더)를 하드 드라이브에 저장하고 fmxl GUI에서 이미지보기로 표시합니다.

아래는 버튼 이벤트 기간 동안 트리거되는 다음 또는 당신이 게시 된 코드를 실행하면

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); 
     } 
관련 문제