如何在java中压缩字符串?

时间:2011-04-06 16:53:14

标签: java string compression image-manipulation

我想将任何图像作为转换为文本的消息发送。但那段文字太长了。我想尽可能地压缩该文本。我该怎么办?如果您提供有关代码的帮助,我将非常感谢您。

3 个答案:

答案 0 :(得分:4)

如果您通过获取现有文件(例如JPG)将图像转换为文本并对其进行base64编码,那么可用的压缩效果不是很多 - 原始文件可能已经被大量压缩了。

(我希望你不是使用new String(bytes)或类似可怕的任何东西来转换任意二进制数据。)

请注意,如果您的输出格式必须是文本,这会使事情变得更加困难 - 一个明显的解决方案是将现有文本转换为字节数组并压缩...但如果您需要转换回文本,你想再次使用base64,这将使它膨胀4/3倍。

答案 1 :(得分:1)

它实际上取决于输入图像的格式,但如果图像已经通过JPEG或PNG(DEFLATE压缩)等图像压缩算法处理,则无法再压缩它。

但是你可以尝试压缩字符串。只需将其转换为bytes数组并使用java.util.zip包。

答案 2 :(得分:1)

如果您正在处理jpeg,那么 - 根据定义,它不能进一步压缩,但它可能编码得更好。

你是如何编码的?如果您使用base-64编码(您将其编码为64个字母),那么您的表现非常好。你可能能够将它编码为128个字符,这将是你的消息大小的一半,但你需要找到128个唯一的ASCII字符,这些字符将通过你正在使用的任何媒体传输(例如,0x08可能通过一个媒体传输一个独特的角色,但在另一种媒介中它可能只删除前一个角色。)