gpt4 book ai didi

java - 使用图像的二进制值更新 xml 文件

转载 作者:行者123 更新时间:2023-12-02 07:44:21 25 4
gpt4 key购买 nike

这是一个示例 XML文件来自 Android客户端。

<test>
<to>Mee</to>
<from>Youuu</from>
<img src="http://www.domain.com/path/to/my/image.jpg" />
</test>

我已经为此编写了一个 XML 解析器。我的问题是在将其传递给 Android 客户端时,我需要图像二进制数据而不是图像路径。我怎样才能做到这一点以及如何使用二进制数据更新上述 XML。

最佳答案

您可以使用Base64对图像二进制数据(由 byte[] 表示)进行编码并将其作为 CDATA 包含在 xml 中。然后在 Android 机器上,您只需将其解码为字节数组,然后渲染图像即可。

您可以使用Apache Commons编码/解码。

编辑:

您需要获取图像数据的字节表示形式才能进行转换。看我的例子。这是使用 sun.misc.BASE64Decodersun.misc.BASE64Encoder,您可能需要根据 Android 上的可用内容进行调整(请参阅 Apache Commons)。

public class SO11096275 {
public static byte[] readImage(URL url) throws IOException {
final ByteArrayOutputStream bais = new ByteArrayOutputStream();
final InputStream is = url.openStream();
try {
int n;
byte[] b = new byte[4096];
while ((n = is.read(b)) > 0) {
bais.write(b, 0, n);
}
return bais.toByteArray();
} finally {
if (is != null) {
is.close();
}
}
}

public static void main(String[] args) throws Exception {
URL url = new URL("http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png");
byte[] imgData = readImage(url);
String imgBase64 = new BASE64Encoder().encode(imgData);
System.out.println(imgBase64);
byte[] decodedData = new BASE64Decoder().decodeBuffer(imgBase64);
FileUtils.writeByteArrayToFile(new File("/path/to/wikipedia-logo.png"), decodedData); // apache commons
}
}

然后,您将图像数据作为 imgBase64 中的字符串,您只需使用所需的 DOM 实现(例如 dom4j)将一个节点附加到您的 xml 中。有一些方法可以将 CDATA 添加到 XML。最后,在 Android 上,您只需要检索节点内容,然后就可以像上面一样对其进行解码,并对图像执行您想要的操作。

关于java - 使用图像的二进制值更新 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11096019/

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