如何减少Base64的大小?

时间:2015-03-27 09:14:25

标签: c# android web-services wcf image-uploading

我是网络服务开发的新手。我正在开发一个Web服务,我需要在服务器上使用将从Android应用程序调用的Web服务上传图像。

我的问题是,当用户从Android设备中选择图像并点击上传按钮时,它会使用Base64类文件生成字符串。它的长度超过3000个字符。

因此,我需要减少使用Base64为图像生成的字符串的大小。

3 个答案:

答案 0 :(得分:2)

根据定义,Base-64是固定大小的表示; n个字节的二进制文件总是m个字符base-64。您可以做的最多就是删除最后一个块的填充,这将为您节省最多3个字符。

如果您希望缩短有效负载,可以:

  • 使用更高的基数(虽然您需要手动编写编码/解码,但您仍然只能达到基数-90或者其他东西,所以你不会大幅 em>减小尺寸)
  • 使用纯二进制帖子体而不是base-anything(这实际上是base-256)
  • 拥有较少的数据
    • 拥有较小的图像
    • 或使用压缩(注意:许多图像格式已经被压缩,所以这通常无济于事)
  • 使用多个请求

答案 1 :(得分:0)

一般来说,要减少数据大小而不丢失任何信息,您需要lossless compression。一个很好的起点可能是Android的built-in zip classes,但你仍然需要通过网络进行编码。

如果它是一个捕获的图像,那么改变JPEG压缩(或原始分辨率)的参数将证明更有用,因为您将获得类似JPEG的数据的压缩,然后是64-are可能很低。

答案 2 :(得分:0)

您需要先缩小实际图像尺寸才能减小base64尺寸。