Java 将图像序列化为字符串
论坛的好朋友 我已经搜索了很多次,但我找不到如何在android中序列化图像并将其传递给字符串Java 将图像序列化为字符串,java,android,android-image,Java,Android,Android Image,论坛的好朋友 我已经搜索了很多次,但我找不到如何在android中序列化图像并将其传递给字符串 可能并非如此,如果有人知道并想通知我,我将不胜感激 尽管java.awt.Image类不是(没有实现)java.io.Serializable,javax.swing.ImageIcon是。因此,您可以按如下方式序列化它: ImageIcon myImage; // declare somewhere ByteArrayOutputStream baos = new ByteArrayOutputSt
可能并非如此,如果有人知道并想通知我,我将不胜感激 尽管
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
类。您可以将图像的字节读取为字节[]
,然后使用Base64对字节[]
进行编码,Base64将是可靠地传输字符串中的二进制数据(如图像)的最有效方法
但是,既然你在请求更小的东西,你可以考虑Base64编码你的图像,然后压缩得到的字符串,然后Base64编码……/P> 它为您节省了几个字节,但不多。在某些情况下,它甚至可能使结果更大
如果您对服务器和客户端都有控制,您应该考虑创建另一个允许发送字节的接口。
为什么要“序列化图像并将其传递给字符串”?请看这个问题:我需要使用XML将其发送到Web服务。我需要将图像发送到标签(图片序列化)和许多其他标签及其内容中。base64是一个选项,但希望发送小于base64的图像。Android上可能没有Awt或Swing的副本。只是说:)。哦。我的错。没有注意到它是安卓的。:)