【问题标题】:How to reduce Base64 size?如何减小 Base64 大小?
【发布时间】:2015-03-27 09:14:25
【问题描述】:

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

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

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

【问题讨论】:

  • 你必须先压缩图像,然后转换成base64。
  • 你可以试试zip流,但不能保证它对你有帮助,因为如果图像已经有压缩格式,这里没有什么可做的
  • 如果图像文件太大,则创建多部分实体 HTTP mime web 服务。
  • @JigneshJain 我已经压缩过图片并使用了 Http mine
  • 下面可以接受答案吗,VVB?

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


【解决方案1】:

根据定义,Base-64 是一种固定大小的表示; n 字节二进制将始终是 m 个字符 base-64。你能做的最多就是删除最后一个块的填充,最多可以节省 3 个字符。

如果您希望有效载荷更短,您可以:

  • 使用更高的基数(尽管您需要手动编写编码/解码,而且您仍然只能达到 base-90 左右或其他值,因此您不会大幅 em> 缩小尺寸)
  • 使用纯二进制 post body 而不是 base-anything(这实际上是 base-256)
  • 数据较少
    • 通过较小的图像
    • 或使用压缩(注意:许多图像格式已被压缩,因此这通常无济于事)
  • 使用多个请求

【讨论】:

    【解决方案2】:

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

    但是,如果它是捕获的图像,则更改 JPEG 压缩(或原始分辨率)的参数将证明更有用,因为您将在类似 JPEG 的数据上获得的压缩,然后是 base-64'd可能非常低。

    【讨论】:

      【解决方案3】:

      您需要先减小实际图像大小才能减小 base64 大小。

      【讨论】:

        猜你喜欢
        • 2017-05-27
        • 2011-06-28
        • 1970-01-01
        • 2019-11-30
        • 1970-01-01
        • 2021-10-26
        • 2011-09-03
        • 2021-03-27
        • 2016-01-17
        相关资源
        最近更新 更多