标签: zlib

zlib 压缩的最佳大小?

我见过关于 zlib 压缩的最小和最大大小的线程。我想知道人们认为可确保最佳速度的压缩数据块的最佳大小是多少。将文件分割成多个文件块是否有优势?

谢谢。

compression performance zlib

5
推荐指数
1
解决办法
1836
查看次数

如何使用 zlib 制作 .zip 文件

我正在阅读 zlib 的文档,它相当详细。但我读到这一行:

输出数据将采用zlib格式,不同于 gzip 或zip格式
http://www.zlib.net/zlib_how.html

似乎 zlib 创建的zlib格式与本 SO 中讨论的zip格式不同:

zlib、gzip 和 zip 有什么关系?它们有什么共同点,又有什么不同?

任何人都知道是否可以使用 zlib 创建 zip 格式?如何?

c zip zlib

5
推荐指数
1
解决办法
7104
查看次数

如何在 node.js 中捕获 zlib 错误

我正在从可能被压缩的服务器下载内容,所以我使用了我在不同地方找到的这个样板:

    var file = fs.createWriteStream(filename);
    var request = https.get(url, function(response) {
        switch (response.headers['content-encoding']) {
        case 'gzip':
            response.pipe(zlib.createGunzip()).pipe(file);
            break;
        case 'deflate':
            response.pipe(zlib.createInflate()).pipe(file);
            break;
        default:
            response.pipe(file);
            break;
        }
        file.on('finish', function() {
            console.log("Done: "+url);
            file.close(function() {});
        });
    }).on('error', function(err) { // Handle errors
        fs.unlink(filename, function() {});
        console.log(err+" "+url);
    });
Run Code Online (Sandbox Code Playgroud)

问题是,如果 HTTPS 请求因网络错误而失败,我有时会抛出此异常:

Error: unexpected end of file
  at Zlib._handle.onerror (zlib.js:363:17)
Run Code Online (Sandbox Code Playgroud)

该“错误”事件处理程序不会捕获异常。那么我如何捕获它,以便我可以正确清理文件并知道再试一次?

exception-handling zlib node.js

5
推荐指数
1
解决办法
2713
查看次数

crc32_combine() 的矩阵技巧的逆是什么?

zlib 的 crc32_combine() 使用 crcA、crcB 和 lengthB 来计算 crcAB。

# returns crcAB
crc32_combine(crcA, crcB, lenB)
Run Code Online (Sandbox Code Playgroud)

使用 Mark Adler在这里这里的精彩帖子中的概念,我能够生成crc32_trim_trailing.pl,它采用 crcAB、crcB 和 lengthB 来计算 crcA(我用它来剥离已知长度和值的填充)。

# prints crcA
perl crc32_trim_trailing.pl $crcAB $crcB $lenB
Run Code Online (Sandbox Code Playgroud)

不幸的是,这使用了所描述的慢速方法的原则,其中每个空字节必须一次剥离一个。它很慢,但很好地证明了概念。

我一直在努力制作 crc32_trim_trailing 的快速版本,它利用 Mark 的帖子中描述的矩阵技巧,并为 zlib 的 crc32_combine() 中的组合用例实现。

这是我在 crc32_trim_trailing.c 上的尝试。

/* crc32_trim_trailing.c
  This code is borrows heavily from crc32.c from zlib version 1.2.8, but has
  been altered.
*/

#include <stdio.h>

#define GF2_DIM 32      /* dimension of GF(2) vectors (length of …
Run Code Online (Sandbox Code Playgroud)

checksum zlib crc matrix

5
推荐指数
1
解决办法
570
查看次数

使用带有 emscripten 的 zlib 配置程序

我决定使用 emscripten 移植一些使用 zlib 的程序。配置失败,因为它抱怨我的系统上没有 zlib。

但:

>ls ~/.emscripten_ports/
freetype      libpng      sdl2        sdl2-image.zip  sdl2-ttf.zip  zlib
freetype.zip  libpng.zip  sdl2-image  sdl2-ttf        sdl2.zip      zlib.zip
Run Code Online (Sandbox Code Playgroud)

和:

> ls ~/.emscripten_cache/asmjs/
dlmalloc.bc  libc.bc       libcxx_noexcept.a  sdl2.bc            sdl2-ttf.bc
freetype.bc  libcxx.a      libpng.bc          sdl2-image.bc      wasm-libc.bc
gl.bc        libcxxabi.bc  ports-builds       sdl2-image-png.bc  zlib.bc
Run Code Online (Sandbox Code Playgroud)

和:

> ls ~/.emscripten_cache/asmjs/ports-builds/
freetype  include  libpng  sdl2  sdl2-image  sdl2-ttf  zlib
Run Code Online (Sandbox Code Playgroud)

我可以使用 --with-libzlib=dir 指定 zlib 的路径

如何配置这个项目?如果这些信息有帮助,我会编译 lincity。

我自己编译了 zlib,使用 emscripten。

emconfigure ./cofigure --prefix=$PATH_TO_SYSTEM_DIR_IN_EMSCRIPTEN
emmake make
emmake make install
Run Code Online (Sandbox Code Playgroud)

我不知道它有效,但是 lincity 的配置并没有抱怨缺少 zlib。它抱怨缺少 libxml-2 并且 libxml-2 需要 python2,所以我放弃了。把这个放在答案中?

html zlib emscripten

5
推荐指数
0
解决办法
1752
查看次数

如何在 swift (Xcode 9) 中使用 zlib 中的 crc32

我是 swift/xcode 的新手,我正在尝试使用 crc32 函数,正如这里提到的,它是在 libz.dylib 的 zlib 中提供的。

我已经修改了代码,以便我现在尝试:

let message1 = "some message".first?.value!.data(using: String.Encoding.utf8, allowLossyConversion: false) let crc = crc32(CLong(0), UnsafePointer<Bytef>(strcat!.bytes), UInt(message1!.length))

但是我遇到了错误:use of unresolved identifier 'crc32'

谁能帮我弄清楚在尝试使用 crc32 函数时我可能会遗漏哪一步?

谢谢!

crc32 zlib swift xcode9

5
推荐指数
1
解决办法
4642
查看次数

找不到 ZLIB(缺少:ZLIB_LIBRARY)(找到版本“1.2.11”)

我试图安装该工具shmutzi在Ubuntu 18.04.2。我已经从 git 克隆它,安装了所有依赖项(除了 zlib,apt install 没有找到,我知道它包含在 zlib1g-dev 中)。

当我尝试使用make该工具时,我得到了这个:

$ make
make -C src/
make[1]: Entering directory '/home/nextgen/src/schmutzi/src'
cd ../lib/bamtools// && mkdir -p build/  && cd build/ && cmake .. && make && cd ../../../src/
-- Checking for one of the modules 'jsoncpp>=1'
Did NOT find system JsonCpp, instead using bundled version
CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find ZLIB (missing: ZLIB_LIBRARY) (found version "1.2.11")
Call Stack (most recent call first):
/usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.10/Modules/FindZLIB.cmake:112 …
Run Code Online (Sandbox Code Playgroud)

zlib ubuntu-18.04

5
推荐指数
1
解决办法
5223
查看次数

LZFSE 压缩文件的通用文件扩展名是什么?

LZFSE 压缩文件的通用文件扩展名是什么?是.lz吗?或者.lzfse

compression zlib

5
推荐指数
0
解决办法
76
查看次数

如何将外部 C 库链接到 WebAssembly 构建

我正在阅读这篇文章(https://www.smashingmagazine.com/2019/04/webassembly-speed-web-app/),其中解释了他们如何使用 zlib 等来加速他们的 Web 项目:

为了支持 zlib 库,我们使用标志 USE_ZLIB;zlib 是如此普遍以至于它已经被移植到 WebAssembly,并且 Emscripten 会在我们的项目中为我们包含它

我想在我自己的 WASM 模块中使用 zlib。

在我的 C 代码(用 emcc 编译)中,我编写了这个接口函数:

#include <zlib.h>

int pcf_decompress_zlib(unsigned char *input, int input_length, unsigned char *output, int output_length)
{
    uLongf output_length_result = output_length;
    int result = uncompress(output, &output_length_result, input, input_length);
    if (result != Z_OK) {
        return 0;
    } else {
        return output_length_result;
    }
}
Run Code Online (Sandbox Code Playgroud)

我是这样编译的:

emcc decompress.c -O3 -s WASM=1 -s SIDE_MODULE=1 -s "EXPORTED_FUNCTIONS=['_pcf_decompress_zlib']" -s USE_ZLIB=1 -o decompress.wasm
Run Code Online (Sandbox Code Playgroud)

当我这样做时,emcc 自动下载到一个 zlib …

zlib webassembly

5
推荐指数
1
解决办法
717
查看次数

Ruby 安装由于缺少扩展而中止:openssl、readline、zlib 编译错误

我正在使用 macOS Catalina。我正在尝试通过 rbenv 安装旧版本的 Ruby(1.9.3、2.1.2)。但是,在尝试安装旧版本时,我不断收到以下错误。*安装 2.4 或更高版本时没问题。

我已经试过了

brew install openssl
brew install readline
brew install zlib
Run Code Online (Sandbox Code Playgroud)

以及 brew 更新。我已经安装并更新了所有内容,但仍然出现以下错误。

我也试过用配置选项安装

RUBY_CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install 2.1.2
Run Code Online (Sandbox Code Playgroud)

请让我知道如何解决这个问题。

ruby-build:使用自制软件中的 readline

构建失败(Mac OS X 10.15.7 使用 ruby​​-build 20201005)

检查或清理工作树在/var/folders/80/ts3rxpm5199g71p1vm4xzydj03b4g3/T/ruby-build.20201113153529.74484.A9uFGC结果记录到/var/folders/80/ts3rxpm5199g71p1vm4xzydj03b4g3/T/ruby-build.20201113153529.74484.log

最后 10 行日志:未编译 Ruby openssl 扩展。未编译 Ruby readline 扩展。未编译 Ruby zlib 扩展。错误:Ruby 安装由于缺少扩展而中止 使用的配置选项: --
prefix=/Users/username/.rbenv/versions/2.1.2
--with-openssl-dir=/usr/local/opt/openssl@1.0
-- with-readline-dir=/usr/local/opt/readline
CC=clang
LDFLAGS=-L/Users/username/.rbenv/versions/2.1.2/lib
CPPFLAGS=-I/Users/username/.rbenv/versions/ 2.1.2/包含

ruby openssl ruby-on-rails zlib rbenv

5
推荐指数
1
解决办法
1561
查看次数