相关疑难解决方法(0)

Twitter图像编码挑战

如果一张图片价值1000字,你可以在140个字符中放入多少图片?

注意:那就是大家!赏金的最后期限就在这里,经过一番艰难的考虑后,我认为Boojum的进入只是勉强淘汰Sam Hocevar的.一旦我有机会写出来,我会发布更详细的笔记.当然,每个人都应该随时继续提交解决方案并改进人们投票的解决方案.感谢所有提交和参赛的人; 我很喜欢他们.这对我来说非常有趣,我希望这对参赛者和观众来说都很有趣.

我遇到了一篇关于尝试将图像压缩成Twitter评论的有趣帖子,该线程中的很多人(以及Reddit上的一个帖子)都提出了有关不同方法的建议.所以,我认为这将是一个很好的编码挑战; 让人们将钱放在嘴边,并展示他们对编码的看法如何在有限的空间中提供更多细节.

我挑战你想出一个通用系统,用于将图像编码成140个字符的Twitter消息,并将它们再次解码为图像.您可以使用Unicode字符,因此每个字符的字符数超过8位.但是,即使允许使用Unicode字符,也需要将图像压缩到非常小的空间内; 这肯定会是一种有损压缩,因此必须对每种结果的好看进行主观判断.

以下是原作者Quasimondo从他的编码中获得的结果(图片根据知识共享署名 - 非商业许可证授权): 蒙娜丽莎

你能做得更好吗?

规则

  1. 您的程序必须有两种模式:编码解码.
  2. 编码:
    1. 您的程序必须以您选择的任何合理光栅图形格式输入图形作为输入.我们会说ImageMagick支持的任何栅格格式都算合理.
    2. 您的程序必须输出一条消息,该消息可以用140个或更少的Unicode代码点表示; 在范围140个的代码点U+0000- U+10FFFF,排除非字符(U+FFFE,U+FFFF,U+ÑFFFE,U+ÑFFFF其中Ñ1- 10十六进制和范围U+FDD0- U+FDEF)和替代代码点(U+D800- U+DFFF).它可以以您选择的任何合理编码输出; GNUiconv支持的任何编码都被认为是合理的,您的平台本机编码或区域编码可能是一个不错的选择.有关详细信息,请参阅下面的Unicode注释
  3. 解码: …

compression unicode twitter

597
推荐指数
14
解决办法
9万
查看次数

在javascript中压缩blob

我需要使用ajax将blob发送到服务器,但它最终会变得有点大,我想减少上传时间.我已经尝试过jszip了,但是这只是在zip中给了我一个空文件.我也尝试了btoa(),但事实证明编码值最终只是[object Blob]而不是实际的blob数据.压缩blob有哪些选择?

这是我用于jszip的代码:

var zip = new JSZip();
zip.file("recording.wav", blobFile);
var content = zip.generate();
Run Code Online (Sandbox Code Playgroud)

然后我将"content"附加到FormData对象并将其发送到服务器.在服务器端,我解码了POST数据(来自base64).zip文件打开很好,但recording.wav是一个0长度的文件.

另外,我尝试过使用此处的LZW实现.这是我用来压缩它的附加代码:

var compressed;
var reader = new FileReader();
reader.onload = function(event){
   compressed = LZW.compress(event.target.result);
};
reader.readAsText(blobFile);
Run Code Online (Sandbox Code Playgroud)

但是,解压缩它会返回null.

javascript compression blob

9
推荐指数
1
解决办法
1万
查看次数

Base91,它是如何计算的?

我一直在网上查找basE91的计算方法.我发现资源,比如这一个指定用于特定值的字符,但无处有我发现我如何获得该值.

我已经尝试将输入值更改为二进制并采用6位和7位的块,但这些不起作用,我得到错误的输出.我不希望代码能为我这样做,因为我自己编写代码,我只想知道将字符串编码为basE91所需的过程.

algorithm encoding base base91

7
推荐指数
1
解决办法
1494
查看次数

Base128 编码对于 JavaScript 字符串等场景有多可行?

我最近发现base32、base64和base128是最有效的base- n编码形式,虽然base58、Ascii85、base91、base92等由于使用了更多字符而确实比普遍存在的base64提供了一些效率改进,但是一些映射损失;例如,base92 中的每个字符对恰好有 272 个索引,这些索引无法映射到以 10 为底的 2 的幂,因此完全被浪费了。(Base91 编码仅丢失 89 个字符(如上面链接中的脚本所示),但它已获得专利。)

如果能够在现代的现实场景中使用 base128,那就太好了。

0x21 (33) 到 0x7E (126) 之间有 92 个可用字符(不含 \"),这为创建具有尽可能多字符的可 JSON 字符串提供了良好的开端。

以下是我设想的找到其余角色的几种方法。这就是我要问的问题。

  • 就傻傻的用Unicode吧

    可以使用两字节 Unicode 字符来填充剩余的 36 个所需索引。高度次优;如果这比网络上的 Base64 更糟糕,我不会感到惊讶。仅对 Unicode 字符计数场景有用,例如推文长度。不完全是我想要的。
     

  • 从上限 (>128) ASCII 范围内选择 36 个非 Unicode 字符

    JavaScript 是在字符编码配置偶尔会出现严重错误的情况下构建的。因此,该语言(和网络浏览器)可以很好地处理打印任意和不可打印的二进制数据。那么为什么不直接使用 ASCII 范围的上限呢?是要用的,对吧?

    一个非常现实的问题可能是数据在我的浏览器和服务器之间通过 HTTP 传输并通过一个或多个开罐器代理。事情会变得多么糟糕?我知道几年前,甚至在今天,基于 HTTP 的 WebSocket 造成了一些真正的痛苦。
     

  • 有趣的方式使用 UTF-8

    UTF-8 定义 1 到 4 字节长的序列来封装 Unicode 代码点。字节 2 到 4 …

javascript encoding bit-manipulation utf-8 character-encoding

6
推荐指数
1
解决办法
4569
查看次数

如何将长字符串转换为短字符串,并且是可逆操作

我有一个很长的stringfrom Base64,但是它太长了,我如何将其转换为短的。我希望这是一个可逆的操作,因为我想从短的中得到长的。顺便说一句,我不想​​将这两个字符串保存到数据库中。

algorithm go

-1
推荐指数
1
解决办法
96
查看次数