问题标签 [zlib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1740 浏览

gzip - 结合 deflate 和 minify - 我是否会产生开销?

我使用 google.codes minify 即时缩小我的 css 和 js 文件。我还设置了我的 .htaccess 以在我的所有 css 和 js 文件上使用 deflate - 一些 js 文件(如 shadowbox 和 tinymce)引用代码中其他 js 文件的原因。所以我正在使用 apache deflate 进行压缩,并且 minify 使用 gzip 压缩了一些 js 和 css 文件 - 我这样做是否会产生开销 - 首先 gzipping (minify) 然后 zlib (deflate) 将再次运行。或者 apache deflate 会忽略在标题中具有由 minify 设置的属性的已压缩文件。有人有这方面的经验吗?

0 投票
2 回答
5671 浏览

sockets - 如何从 zlib 确定压缩数据的压缩大小?

我正在使用 zlib 执行 gzip 压缩。zlib 将数据压缩后直接写入打开的 TCP 套接字。

(当然所有错误处理都被删除了)

问题是:如何确定向套接字写入了多少字节?zlib 中的所有 gz* 函数都处理未压缩域中的字节数/偏移量,并且 tell (seek) 不适用于套接字。

zlib.h 标头说“这个库也可以选择在内存中读取和写入 gzip 流。” 写入缓冲区会起作用(然后我可以随后将缓冲区写入套接字),但我看不到如何使用接口执行此操作。

0 投票
2 回答
1102 浏览

python - 如何使用 App Engine 中的 Task Queue Python API 传递压缩数据?

我正在尝试将压缩数据与任务队列中的任务一起使用,如下所示:

但是,当我尝试像这样在队列处理程序中解压缩它时

我收到此错误:

UnicodeEncodeError:'ascii' 编解码器无法在位置 2 编码字符 u'\u06b8':序数不在范围内(128)

有人知道这里发生了什么吗?有解决办法吗?

0 投票
1 回答
857 浏览

zlib - 在 gzip 库中,“uncompress”和“gzopen”有什么区别?

zlib库中有一些函数需要解压(zlib 1.2.3版本)

我想使用uncompress函数解压缩我的源 zip (.gz) 文件。它不工作(错误代码-3),但 gzopen 是。当我将有效负载指针(传递 gzip 标头)输入到uncompress.

所以问题是:

  • 解压缩函数的有效参数是什么?
  • 如果它需要不同的格式,我该怎么做?
0 投票
6 回答
18993 浏览

python - Python:创建类似 gzip 的流式文件?

我正在尝试找出使用 Python 压缩流的最佳方法zlib

我有一个类似文件的输入流(input下面的)和一个接受类似文件的输出函数(output_function下面的):

而且我想input在将块发送到之前对其进行 gzip 压缩output_function

看起来gzip模块假定输入或输出将是 gzip 的磁盘文件……所以我假设zlib模块是我想要的。

但是,它本身并没有提供一种简单的方法来创建类似流文件的...并且它支持的流压缩是通过手动将数据添加到压缩缓冲区,然后刷新该缓冲区来实现的。

当然,我可以写一个包装器zlib.Compress.compresszlib.Compress.flush(Compresszlib.compressobj()) 返回,但我会担心缓冲区大小错误或类似的东西。

那么,使用 Python 创建流式 gzip 压缩文件的最简单方法是什么?

编辑:为了澄清,输入流和压缩输出流都太大而无法放入内存,所以类似output_function(StringIO(zlib.compress(input.read())))的东西并不能真正解决问题。

0 投票
1 回答
1187 浏览

zlib - Zlib 错误信息

我在 Windows XP 上玩一个名为“Laxius Power”的老式 RPG 时出现“zlib 错误”消息。它只是把我踢出游戏!我该如何解决?

0 投票
1 回答
922 浏览

http - C http 请求 gzip (zlib)

我正在使用 winsock 发出 http 请求,我需要解析响应。问题是,无论我在请求标头中指定什么,某些站点都会 gzip。我什至尝试将请求降级为HTTP/1.0没有成功。所以现在我要添加 deflate/gzip 支持并且没有运气。我让我的程序将压缩内容写入文件。然后我尝试用该gzip工具解压缩它,但它给出了一个错误,说它是一个多部分的 gzip 文件。经过一番阅读,我发现这是由于 gzip 标头由于未作为二进制文件处理而损坏引起的。我不确定此时该怎么做。

0 投票
2 回答
36708 浏览

g++ - 与 libpng 和 zlib 链接?

我正在尝试编译一个同时使用 libjpeg 和 libpng 的项目。我知道 libpng 需要 zlib,所以我独立编译了所有三个并将它们(libjpeg.a、libpng.a 和 libz.a)放在一个名为linrel32. 然后我执行的是:

g++ -Llinrel32/ program.cpp otherfile.cpp -o linrel32/executable -Izlib/ -Ilpng140/ -Ijpeg/ -lpthread -lX11 -O2 -DLINUX -s -lz -lpng -ljpeg

所以我包括了这三个库。尽管如此,链接器仍然抱怨:

(......你明白了:D)

我知道缺少的函数来自 zlib,我正在那里添加 zlib。打开 libz.a,它似乎有一个很好的结构。重新编译它,一切看起来都很好。但它不是...

我不知道,可能问题是小问题,我需要的是睡一会儿。但是,如果你能帮我弄清楚这件事......

0 投票
2 回答
30405 浏览

python - Python逐块解压缩gzip

我有一个内存和磁盘受限的环境,我需要解压缩以基于字符串的块(通过 xmlrpc 二进制传输)发送给我的 gzip 文件的内容。但是,使用 zlib.decompress() 或 zlib.decompressobj()/decompress() 两者都会对 gzip 标头产生影响。我尝试过抵消 gzip 标头(在此处记录),但仍然无法避免出现问题。gzip 库本身似乎只支持从文件中解压缩。

以下代码片段简要说明了我想要做什么(除了在现实生活中,缓冲区将从 xmlrpc 填充,而不是从本地文件中读取):

不幸的是,正如我所说,这令人讨厌:

从理论上讲,我可以将来自 xmlrpc 的数据输入 StringIO,然后将其用作 gzip.GzipFile() 的 fileobj,但是,在现实生活中,我也没有可用的内存来将整个文件内容保存在内存中作为解压后的数据。我确实需要逐块处理它。

后备方案是将我的 xmlrpc 来源数据的压缩从 gzip 更改为纯 zlib,但由于这会影响其他子系统,我希望尽可能避免它。

有任何想法吗?

0 投票
3 回答
3606 浏览

java - Python 上的 zlib.compress 和 Java (Android) 上的 Deflater.deflate 是否兼容?

我正在将 Python 应用程序移植到 Android,并且在某些时候,该应用程序必须与 Web 服务通信,向其发送压缩数据。

为了做到这一点,它使用了下一个方法:

我正在使用下一种方法来尝试在 Android 中模拟这种行为:

但是来自服务器的 HTTP 响应不正确,我猜这是因为 Java 中的压缩结果与 Python 中的不一样。

我用 zlib.compress 和 deflate 进行了压缩“a”的小测试。

Python,zlib.compress() -> x%9CSJT%02%00%01M%00%A6

Android,Deflater.deflate -> H%EF%BF%BDK%04%00%00b%00b

我应该如何压缩 Android 中的数据以在 Python 中获得相同的 zlib.compress() 值?

非常感谢任何帮助、指导或指针!