base64编码的String(un)压缩在Java(Android)中

时间:2013-10-05 21:27:33

标签: java android compression base64 byte

我正在开发一个Android应用程序,服务器向应用程序发送不同的base64编码图像(反之亦然)。 是否可以压缩base64字符串?

之类的东西
photo --> base64 encoded string --> compressed string

这样做,我可以保存多少或更少的数据?而且,如果我可以节省一些字节,那么在Android和Java中进行压缩的最佳方法是什么?

在纯Java中,我在Stackoverflow上播放Deflater类(可以完成这项工作,但我不知道它可以保存多少数据)。

1 个答案:

答案 0 :(得分:3)

压缩率取决于消息中的冗余 大多数图像格式已经被压缩,因此没有有意义的冗余。

将图像转换为base64会将其展开by about 37% 压缩永远不会100%有效,它总是增加一点开销(对于标题和东西) 所以你看的是原始图像的105%。

但是请注意,压缩base64文件是没有意义的,因为base64ing文件的全部要点是允许它作为文本发送。
如果你压缩它,它将再次成为二进制 在这种情况下,最好保持原样。

如果需要留下易于发送的字符串
它需要保持base64。由于原件已经压缩,因此无法进一步压缩。

<强>替代
如果你有一个有损算法(比如jpeg),你可以通过将图片扩展到位图然后使用不同的参数将其重新编码回jpeg来缩小图片。
这将导致一些质量损失,但可以是将8MB图像转换为100kB图像的好方法 然后你可以base64它并通过电子邮件发送它。