我正在开发一个Android应用程序,服务器向应用程序发送不同的base64编码图像(反之亦然)。 是否可以压缩base64字符串?
之类的东西photo --> base64 encoded string --> compressed string
这样做,我可以保存多少或更少的数据?而且,如果我可以节省一些字节,那么在Android和Java中进行压缩的最佳方法是什么?
在纯Java中,我在Stackoverflow上播放Deflater类(可以完成这项工作,但我不知道它可以保存多少数据)。
答案 0 :(得分:3)
压缩率取决于消息中的冗余 大多数图像格式已经被压缩,因此没有有意义的冗余。
将图像转换为base64会将其展开by about 37% 压缩永远不会100%有效,它总是增加一点开销(对于标题和东西) 所以你看的是原始图像的105%。
但是请注意,压缩base64文件是没有意义的,因为base64ing文件的全部要点是允许它作为文本发送。
如果你压缩它,它将再次成为二进制
在这种情况下,最好保持原样。
如果需要留下易于发送的字符串
它需要保持base64。由于原件已经压缩,因此无法进一步压缩。
<强>替代强>
如果你有一个有损算法(比如jpeg),你可以通过将图片扩展到位图然后使用不同的参数将其重新编码回jpeg来缩小图片。
这将导致一些质量损失,但可以是将8MB图像转换为100kB图像的好方法
然后你可以base64它并通过电子邮件发送它。