论坛的好朋友。
我一直在搜索很多,但我找不到如何序列化图像并将其传递给 android 中的字符串。
可能不是这样,如果有人知道并想通知我,我将非常感激!
论坛的好朋友。
我一直在搜索很多,但我找不到如何序列化图像并将其传递给 android 中的字符串。
可能不是这样,如果有人知道并想通知我,我将非常感激!
Base64 将是在字符串中可靠地传输二进制数据(例如图像)的最有效方式。
但是,由于您要求的东西更小,您可以考虑对图像进行 base64 编码,然后压缩结果字符串,然后进行 base64 编码...
它为您节省了几个字节,但不多。在某些情况下,它甚至可能使结果更大。
如果您同时控制服务器和客户端,则应考虑创建另一个允许您发送字节的接口。
虽然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
类。
您可以将图像的字节读取到 abyte[]
然后byte[]
使用 Base64进行编码,方法如下。