我有一个名为的人。每个人有一个存储为javafx.scene.image.Image字段的头像图像。我试图将这些图像从人集合写入一个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文件中的一部分。
这就是为什么我收到javax.imageio.IIOException: Error reading PNG image data
@ (PersonXMLTool.java:77)
这是BufferedImage image = ImageIO.read(byteArrayInputStream);
和Caused by: java.io.EOFException: Unexpected end of ZLIB input stream
。
起初我使用的是Apache commons Base64,但它没有任何区别。在我的测试项目上,我也是这样做的,它工作。不同之处在于我没有将编码图像写入任何xml文件,而是使用它为我生成的字符串。
任何帮助表示赞赏。
感谢您的帮助!现在正在工作。 – kpeek 2014-11-02 08:33:16