zlib中使用的压缩算法与gzip和zip中的压缩算法基本相同.什么是gzip和zip?它们有何不同,它们是如何相同的?
如果一张图片价值1000字,你可以在140个字符中放入多少图片?
注意:那就是大家!赏金的最后期限就在这里,经过一番艰难的考虑后,我认为Boojum的进入只是勉强淘汰Sam Hocevar的.一旦我有机会写出来,我会发布更详细的笔记.当然,每个人都应该随时继续提交解决方案并改进人们投票的解决方案.感谢所有提交和参赛的人; 我很喜欢他们.这对我来说非常有趣,我希望这对参赛者和观众来说都很有趣.
我遇到了一篇关于尝试将图像压缩成Twitter评论的有趣帖子,该线程中的很多人(以及Reddit上的一个帖子)都提出了有关不同方法的建议.所以,我认为这将是一个很好的编码挑战; 让人们将钱放在嘴边,并展示他们对编码的看法如何在有限的空间中提供更多细节.
我挑战你想出一个通用系统,用于将图像编码成140个字符的Twitter消息,并将它们再次解码为图像.您可以使用Unicode字符,因此每个字符的字符数超过8位.但是,即使允许使用Unicode字符,也需要将图像压缩到非常小的空间内; 这肯定会是一种有损压缩,因此必须对每种结果的好看进行主观判断.
以下是原作者Quasimondo从他的编码中获得的结果(图片根据知识共享署名 - 非商业许可证授权):
你能做得更好吗?
U+0000
- U+10FFFF
,排除非字符(U+FFFE
,U+FFFF
,U+
ÑFFFE
,U+
ÑFFFF
其中Ñ是1
- 10
十六进制和范围U+FDD0
- U+FDEF
)和替代代码点(U+D800
- U+DFFF
).它可以以您选择的任何合理编码输出; GNUiconv
支持的任何编码都被认为是合理的,您的平台本机编码或区域编码可能是一个不错的选择.有关详细信息,请参阅下面的Unicode注释是否有任何命令行脚本和/或在线工具可以扭转缩小的影响,类似于Tidy如何清理可怕的HTML?
(我特意想要消除一个缩小的JavaScript文件,因此变量重命名可能仍然是一个问题.)
如何启用IIS7来gzip静态文件,如js和css,如何在发送到客户端之前测试IIS7是否真正gziping它们?
我查看了JDK和Apache压缩库附带的默认Zip库,我对它们不满意有三个原因:
它们很臃肿,API设计不好.我必须写50行锅炉板字节数组输出,zip输入,文件输出流和关闭相关流并捕获异常并自行移动字节缓冲区?为什么我不能有一个简单的API,它看起来像这样Zipper.unzip(InputStream zipFile, File targetDirectory, String password = null)
和Zipper.zip(File targetDirectory, String password = null)
刚刚工作的?
它似乎压缩解压缩破坏文件元数据和密码处理被打破.
此外,与我使用UNIX获得的命令行zip工具相比,我尝试的所有库都慢2-3倍?
对我来说(2)和(3)是次要的,但我真的想要一个带有单线界面的良好测试库.
这两种方法为LAMP服务器提供的html,css和javascript文件提供了哪些优势.还有更好的选择吗?
服务器使用Json向地图应用程序提供信息,因此大量的小文件.
我正在编写一个Web应用程序,需要通过AJAX将JSON数据存储在一个小的,固定大小的服务器端缓存中(想想:Opensocial配额).我无法控制服务器.
我需要减少存储数据的大小以保持服务器端配额,并且希望能够在将其发送到服务器之前在浏览器中对字符串化JSON进行gzip.
但是,我找不到Gzip的JavaScript实现方式.有关如何在发送之前压缩客户端数据的任何建议吗?
什么是最好的JavaScript压缩器?我正在寻找一种工具:
我很确定这不是重复的,所以请耐心等待一分钟.
如何在不使用任何第三方库的情况下以编程方式(C#)压缩文件(在Windows中)?我需要一个原生的Windows调用或类似的东西; 我真的不喜欢开始一个过程的想法,但如果我绝对不得不这样做.PInovke呼叫会好得多.
如果做不到这一点,让我告诉你我真正想要实现的目标:我需要能够让用户在一个请求中下载一组文档.有关如何实现这一目标的任何想法?
我正在尝试使用MemoryStream
如下的简单演示文本文件创建ZIP存档:
using (var memoryStream = new MemoryStream())
using (var archive = new ZipArchive(memoryStream , ZipArchiveMode.Create))
{
var demoFile = archive.CreateEntry("foo.txt");
using (var entryStream = demoFile.Open())
using (var streamWriter = new StreamWriter(entryStream))
{
streamWriter.Write("Bar!");
}
using (var fileStream = new FileStream(@"C:\Temp\test.zip", FileMode.Create))
{
stream.CopyTo(fileStream);
}
}
Run Code Online (Sandbox Code Playgroud)
如果我运行此代码,则会创建存档文件本身,但不会创建foo.txt.
但是,如果我MemoryStream
直接替换文件流,则会正确创建存档:
using (var fileStream = new FileStream(@"C:\Temp\test.zip", FileMode.Create))
using (var archive = new ZipArchive(fileStream, FileMode.Create))
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用a MemoryStream
创建ZIP存档而不用FileStream
?