나는 이라는 클래스가 있습니다. 사람입니다. 각 사람에는 javafx.scene.image.Image 필드로 저장된 아바타 이미지가 있습니다. Person 컬렉션의 이미지를 xml 파일에 쓰려고합니다.JavaFX를 사용하여 XML 파일에서 PNG 수신
이 내가 이미지를 작성하는 방법입니다 :
Image image = p.getImage();
BufferedImage img = SwingFXUtils.fromFXImage(image, null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img, "png", baos);
// baos.flush();
String encodedImage = Base64.getEncoder().encodeToString(baos.toByteArray());
baos.close();
xmlEventWriter.add(xmlEventFactory.createCharacters(encodedImage));
을 그리고 이것은 내가 그것을 읽으려고하고 어떻게 : XML 파일에서 인코딩 된 이미지를 읽을 때
byte[] bytes = Base64.getDecoder().decode(event.asCharacters().getData());
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
BufferedImage image = ImageIO.read(byteArrayInputStream);
personImage = SwingFXUtils.toFXImage(image, null);
문제가 시작됩니다. 나는 모든 문자 세트를받지 못하고있다. event.asCharacters().getData()
의 값은 xml 파일에서 찾을 수있는 것의 일부일뿐입니다.
그 이유는 @ (PersonXMLTool.java:77)
이 BufferedImage image = ImageIO.read(byteArrayInputStream);
이고 Caused by: java.io.EOFException: Unexpected end of ZLIB input stream
인 이유입니다.
처음에 나는 아파치 Commons Base64를 사용하고 있었지만 아무런 차이가 없었습니다. 내 테스트 프로젝트에서 나는 똑같이하고 있었고 효과가 있었다. 차이점은 내가 어떤 XML 파일에 인코딩 된 이미지를 작성하지 않았지만 나를 위해 생성 된 String을 사용한다는 것입니다.
도움을 주시면 감사하겠습니다.
감사합니다! 이제 작동 중입니다. – kpeek