好朋友。
几个月后,我正在寻找一种方法来序列化我存储在imageView中的图像。
此图像由相机拍摄并启动ImageView,但问题esque需要序列化并将其传递给文本字符串。
我在谷歌和论坛上搜索过高,但没有人找到答案。
任何人都知道如何做的方法?。
答案 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数据以重新创建图像。