论坛的好朋友。
我一直在搜索,我找不到如何序列化图像并将其传递给android中的String。
可能不是这样,如果有人知道并想通知我,我会非常感激!。
答案 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编码......
它可以节省几个字节,但不会很多。在某些情况下,甚至可能会使结果更大。
如果您同时控制服务器和客户端,则应考虑创建另一个允许您发送字节的接口。