Hoo*_*pla 10 java xml encoding image
我以为我会相对容易地找到解决这个问题的方法,但是在这里我要求你们众神的帮助让我摆脱这个难题.
所以,我有一个图像,我想用Java将它存储在XML文档中.我以前通过将图像保存到流中,将流转换为数组,然后VB的xml类能够将数组编码为base64字符串,在VisualBasic中实现了这一点.但是,经过几个小时的网络搜索以获得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();
}
Run Code Online (Sandbox Code Playgroud)
我想这是可以的,但是当我加载XML文件时,将其转换回图像的过程已被证明是不可能的.如果有人有更好的方法对XML文件中的图像进行编码/解码,请向前迈进,即使它只是指向其他线程的链接也没关系.
提前干杯,
喧闹.
Joã*_*lva 20
我做过类似的事情(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));
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.
归档时间: |
|
查看次数: |
22990 次 |
最近记录: |