将图像序列化为String

时间:2012-04-30 22:02:09

标签: java android android-image

论坛的好朋友。

我一直在搜索,我找不到如何序列化图像并将其传递给android中的String。

可能不是这样,如果有人知道并想通知我,我会非常感激!。

3 个答案:

答案 0 :(得分:1)

虽然java.awt.Image类不是(未实现)java.io.Serializable,但javax.swing.ImageIcon是。因此,您可以按如下方式对其进行序列化:

ImageIcon myImage; // declare somewhere
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(myImage);
byte[] theBytes = baos.toByteArray();
StringBuffer buf = new StringBuffer();
for (byte b : theBytes) {
  buf.append((char) b); // cast to char, then append
}
String theString = b.toString();

我会让你弄清楚如何反转它,但这里有一个提示:使用OutputStream类而不是InputStream类。

答案 1 :(得分:1)

您可以将图片的字节读取为byte[],然后使用Base64对byte[]进行编码,Here就是如此。

答案 2 :(得分:1)

Base64将是在字符串中可靠地传输二进制数据(如图像)的最有效方式。

但是,由于您要求更小的东西,您可以考虑对图像进行base64编码,然后压缩结果字符串,然后对其进行base64编码......

它可以节省几个字节,但不会很多。在某些情况下,甚至可能会使结果更大。

如果您同时控制服务器和客户端,则应考虑创建另一个允许您发送字节的接口。