以下用例是问题的基础: 通过网络以文本形式发送图像吗?以最小的尺寸实现这一点.

我知道,要将二进制数据(图像)作为文本发送,标准解决方案是将其编码为Base64.然而,正如所知,它使尺寸增加了约33%.

有没有一种方法可以在使用压缩的同时仍然将图像作为文本发送?

This answer部分地回答了这个问题.仍处于打开状态的点:

例如,如果我先编码为base64,然后再编码为gzip,那么gz缓冲区将再次是二进制还是字符串?

或者反过来,我可以先将内存中的图像压缩,然后编码为Base64通过网络发送吗?

OBS:如果是node.js中的示例代码,我们将不胜感激.

谢谢.

推荐答案

如果您压缩Base-64输出,那么它再次是二进制的,大部分Base-64扩展将被undo撤消.虽然仍然比原来的稍大一些.压缩始终会产生二进制输出,因此必须在压缩后进行编码.

如果您想要小于33%的扩展,则可以使用超过64个字符.找出有多少字符你可以通过你的媒介传达为"文本"而不会损坏.这很可能比64岁多一点.它可能在85到95之间.那就叫n吧.现在,您可以使用大约log(256)/log(n)的扩展进行编码.然后你可以把扩张幅度降到25%到22%.

Javascript相关问答推荐

当promise 在拒绝处理程序被锁定之前被拒绝时,为什么我们会得到未捕获的错误?

如何用显示网格平滑地将元素从一个地方移动到另一个地方?

我的服务工作器没有连接到我的Chrome扩展中的内容脚本.我该怎么解决这个问题?

无法从NextJS组件传递函数作为参数'

如何在JavaScript文件中使用Json文件

Javascript json定制

我怎么才能得到Kotlin的密文?

提交链接到AJAX数据结果的表单

当使用';字母而不是与';var#39;一起使用时,访问窗口为什么返回未定义的?

为什么123[';toString';].long返回1?

第三方包不需要NODE_MODULES文件夹就可以工作吗?

在开发期间,Web浏览器如何运行&qot;.jsx&qot;文件?

如何在JAVASCRIPT中临时删除eventListener?

如何在我的Next.js项目中.blob()我的图像文件?

如何防止ionic 输入中的特殊字符.?

用于部分字符串的JavaScript数组搜索

是否可以在不更改组件标识的情况下换出Reaction组件定义(以维护状态/引用等)?如果是这样的话,是如何做到的呢?

如何使用[ModelJSON,ArrayBuffer]调用tf.loadGraphModelSync

如何从Reaction-Redux中来自API调用的数据中筛选值

如何从图表中映射一组图表-js使用REACT