gpt4 book ai didi

Java - XML 中的图像编码

转载 作者:搜寻专家 更新时间:2023-10-30 21:37:36 25 4
gpt4 key购买 nike

我以为我会相对容易地找到解决这个问题的方法,但在这里我呼吁各位大神帮助我摆脱这个难题。

所以,我有一张图片,我想使用 Java 将它存储在 XML 文档中。我以前在 VisualBasic 中通过将图像保存到流、将流转换为数组来实现这一点,然后 VB 的 xml 类能够将数组编码为 base64 字符串。但是,在网上搜索了几个小时的 Java 等效解决方案之后,我空手而归。我取得的唯一成功是:

import it.sauronsoftware.base64.*;
import java.awt.image.BufferedImage;
import org.w3c.dom.*;

...

BufferedImage img;
Element node;

...

java.io.ByteArrayOutputStream os = new java.io.ByteArrayOutputStream();

ImageIO.write(img, "png", os);

byte[] array = Base64.encode(os.toByteArray());

String ss = arrayToString(array, ",");

node.setTextContent(ss);

...

private static String arrayToString(byte[] a, String separator) {
StringBuffer result = new StringBuffer();
if (a.length > 0) {
result.append(a[0]);
for (int i=1; i<a.length; i++) {
result.append(separator);
result.append(a[i]);
}
}
return result.toString();
}

我想这没问题,但事实证明,在我加载 XML 文件时反转过程以将其恢复为图像是不可能的。如果有人有更好的方法来编码/解码 XML 文件中的图像,请继续前进,即使它只是指向另一个线程的链接也是可以的。

提前干杯,

大呼小叫。

最佳答案

我做过类似的事情(在 Base64 中编码和解码),而且效果很好。这是我认为你应该做的,使用类 Base64来自 Apache Commons 项目:

 //  ENCODING
BufferedImage img = ImageIO.read(new File("image.png"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(img, "png", baos);
baos.flush();
String encodedImage = Base64.encodeToString(baos.toByteArray());
baos.close(); // should be inside a finally block
node.setTextContent(encodedImage); // store it inside node

// DECODING
String encodedImage = node.getTextContent();
byte[] bytes = Base64.decode(encodedImage);
BufferedImage image = ImageIO.read(new ByteArrayInputStream(bytes));

希望对您有所帮助。

关于Java - XML 中的图像编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1312832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com