Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将图像序列化为字符串_Java_Android_Android Image - Fatal编程技术网

Java 将图像序列化为字符串

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

论坛的好朋友

我已经搜索了很多次,但我找不到如何在android中序列化图像并将其传递给字符串


可能并非如此,如果有人知道并想通知我,我将不胜感激

尽管
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的副本。只是说:)。哦。我的错。没有注意到它是安卓的。:)