0

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

photo --> base64 encoded string --> compressed string

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

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

4

1 回答 1

3

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

将图像转换为 base64 会将其扩展约 37%
压缩永远不会 100% 有效,而且它总是会增加一点开销(对于标题和内容)。
因此,您正在查看 105% 的原始图像。

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

如果它需要保留一个可发送电子邮件的字符串
,它需要保留 base64。因为原件已经被压缩,所以您无法进一步压缩它。

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

于 2013-10-05T22:01:41.763 回答