将图像序列化为字符串

时间:2012-05-09 22:22:33

标签: java android serialization

好朋友。

几个月后,我正在寻找一种方法来序列化我存储在imageView中的图像。

此图像由相机拍摄并启动ImageView,但问题esque需要序列化并将其传递给文本字符串。

我在谷歌和论坛上搜索过高,但没有人找到答案。

任何人都知道如何做的方法?。

1 个答案:

答案 0 :(得分:3)

如果要将二进制数据安全地作为文本移动,可以对二进制数据进行Base64编码。如果您使用的是不包含Base64工具的Android API,请参阅:How to use Base64 (included in android since api 8 (2.2)) in a android project api 3 (android 1.5)?

一旦你的二进制数据被Base64编码,它就可以安全地通过只需要“普通”ascii文本的系统。

请记住,您的位图数据将被解压缩,因此在Base64编码时会生成大量文本(Base64编码会导致表示数据所需的字节数增加1/3)。要缓解这种情况,您应该在Base64对其进行编码之前压缩Bitmap图像数据,使用类似:

try
{
    ByteArrayOutputStream baos = new ByteArrayOutputStream(8192);
    bitmap.compress(CompressFormat.JPEG, COMPRESSION_AMOUNT, baos);     
    byte[] compressedBytes = baos.toByteArray();
}

您希望将COMPRESSION_AMOUNT设置为50-80之间的值,具体取决于您想要的尺寸和质量之间的权衡。

接收数据的任何客户端首先需要Base64取消编码,然后将生成的字节解析为JPEG数据以重新创建图像。