0

好朋友们。

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

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

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

任何人都知道我该怎么做的一些方法?

4

1 回答 1

3

如果您想将二进制数据作为文本安全地移动,您可以对二进制数据进行 Base64 编码。如果您使用的是不包含 Base64 实用程序的 Android API,请参阅:如何在 android 项目 api 3 (android 1.5) 中使用 Base64(自 api 8 (2.2) 起包含在 android 中)?

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

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

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

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

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

于 2012-05-09T22:32:46.240 回答